【发布时间】:2016-02-08 21:53:15
【问题描述】:
我收到以下错误:
,值十六进制 0x02,字符无效。
使用此代码:
using (XLWorkbook wb = new XLWorkbook())
{
wb.Worksheets.Add(dt1);
Response.Clear();
Response.Buffer = true;
Response.Charset ="";
Response.ContentType = "application/vnd.openxmlformats- officedocument.spreadsheetml.sheet";
//Response.AddHeader("content-disposition", "attachment;filename=GridView.xlsx");
Response.AddHeader("content-disposition", "attachment;filename=" + filename);
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
}
我尝试了不同的方法,但仍然遇到同样的错误。 “dt1”由存储过程填充。
【问题讨论】:
-
如果你想向 XLWorkBook 添加一个数据表,你做错了。在你创建
wb之后,你需要创建一个工作表,顺便说一下,你的工作表的名称是是一个字符串,例如var ws = wb.Worksheets.Add("My Test WorkSheet");,它会在 Excel 打开时显示在底部。然后要将数据表添加到工作表中,您需要指定一个单元格范围,例如ws.Cell(11, 1).InsertTable(dt1.AsEnumerable()); -
我发布了一个使用 ClosedXML 的工作示例我知道这是可行的,因为我也刚刚对其进行了测试..
-
@MethodMan 您可以将 DataTable 添加为新的 Worksheet,参见documentation。
-
从错误消息中我认为 DataTable 包含无效的字符串数据。
-
@Raidri 您可以添加一个数据表,但必须为初学者插入它。工作表名称也是他应该命名的名称。不是整个数据表。我已经测试了我的解决方案,它工作与 OP 试图做的事情.. 因为 OP 没有根据
ClosedXML文档显示的方式添加 DataTable 如果是这种情况,OP 必须在数据表中有一些无关的数据我也有我可以发布的方法,如果html字符存在于 DataTable 中,将删除它们