求教NPOI的高手,C#用NPOI导出Excel出现乱码

T_Customer[]customer=T_CustomerBLL.GetAll();HSSFWorkbookworkbook=newHSSFWorkbook();IS... T_Customer[] customer = T_CustomerBLL.GetAll();
HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet("客户信息(" + DateTime.Now.ToString("yyyy-MM-dd") + ")");
IRow headerRow = sheet.CreateRow(0);
headerRow.CreateCell(0, CellType.String).SetCellValue("姓名");
headerRow.CreateCell(1, CellType.String).SetCellValue("电话");
headerRow.CreateCell(2, CellType.String).SetCellValue("手机");
headerRow.CreateCell(3, CellType.String).SetCellValue("邮编");
headerRow.CreateCell(4, CellType.String).SetCellValue("地址");
headerRow.CreateCell(5, CellType.String).SetCellValue("门店编号");
headerRow.CreateCell(6, CellType.String).SetCellValue("购买日期");

表头直接用字符串的就会乱码,还有sheet的名称直接用字符串也会乱码
for (int i = 0; i < customer.Length; i++)
{
IRow row = sheet.CreateRow(i + 1);
row.CreateCell(0, CellType.String).SetCellValue(customer[i].c_Name);
row.CreateCell(1, CellType.String).SetCellValue(customer[i].c_TelPhone);
row.CreateCell(2, CellType.String).SetCellValue(customer[i].c_MobilePhone);
row.CreateCell(3, CellType.String).SetCellValue(customer[i].c_Post);
row.CreateCell(4, CellType.String).SetCellValue(customer[i].c_Address);
row.CreateCell(5, CellType.String).SetCellValue(customer[i].c_ShopNum);
row.CreateCell(6, CellType.String).SetCellValue(Convert.ToString( customer[i].c_BuyDate.ToString("yyyy-MM-dd")));
row.CreateCell(7, CellType.String).SetCellValue(customer[i].c_CarNum);
row.CreateCell(8, CellType.String).SetCellValue(customer[i].c_BracketNum);
row.CreateCell(9, CellType.String).SetCellValue(customer[i].c_Brand);
row.CreateCell(10, CellType.String).SetCellValue(customer[i].c_TypeNum);
row.CreateCell(11, CellType.String).SetCellValue(customer[i].c_Suggestion);
row.CreateCell(12, CellType.String).SetCellValue(customer[i].c_Remarks);
//设置自动列宽度
for (int t = 0; t < row.LastCellNum; t++)
{
sheet.AutoSizeColumn(t);
}
}
using (FileStream stream = File.OpenWrite(filePath))
{
workbook.Write(stream);
}
下面的在数据库查出来的数据在Excel里面就不会乱码
反正就是直接写用双引号括住的字符就会乱码。
这是怎么回事
我用的是NPOI binary 2.1.3.1
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
刷新①丅5e6
推荐于2017-09-27 · TA获得超过4333个赞
知道大有可为答主
回答量:1499
采纳率:64%
帮助的人:605万
展开全部

字符编解码的问题吧。

这样试试:

string name = Encoding.UTF8.GetString(Encoding.Default.GetBytes("姓名"));
headerRow.CreateCell(0, CellType.String).SetCellValue(name);
追问
这是转utf8的吧,
但是还是乱码,只是跟之前的乱码不一样之前是
ÐÕÃû
现在是 ?DD 乱七八糟的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狠离们1M
2017-07-29
知道答主
回答量:35
采纳率:100%
帮助的人:3.3万
展开全部
字符编解码的问题吧。 这样试试: string name = Encoding.UTF8.GetString(Encoding.Default.GetBytes("姓名"));headerRow.CreateCell(0, CellType...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2的128次方
2017-09-26 · TA获得超过277个赞
知道小有建树答主
回答量:761
采纳率:68%
帮助的人:170万
展开全部
你看看是不是这个声名的问题
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
maple159357
2017-09-23 · TA获得超过259个赞
知道答主
回答量:54
采纳率:66%
帮助的人:19.8万
展开全部
先排除是不是编码的原因,其次我遇到的情况是编码没问题,偶尔生成的文件会报“发现部分内容有问题”,有个弹出框,很不爽。据说是第三方工具生成的文件内容不规范原因。以下的方式成功解决了。
fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);用这种方式保存文件,现在问题解决了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式