我使用以下代码将DataTable
写入Excel
。我使用using ClosedXML.Excel
将其导出到Excel
var worksheet = workbook.Worksheets.Add(dataTable, "Report");
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename="Report.xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
workbook.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
MyMemoryStream.Close();
}
Response.Flush();
Response.End();
以上代码会抛出特殊字符的错误:'',十六进制值0x1A,是无效字符。我无法在此处复制特殊字符。所以请道歉。
我在下面的帖子中看到了替换帖子C# hexadecimal value 0x12, is an invalid character
中的特殊字符static string ReplaceHexadecimalSymbols(string txt)
{
string r = "[\x00-\x08\x0B\x0C\x0E-\x1F\x26]";
return Regex.Replace(txt, r,"",RegexOptions.Compiled);
}
有人可以指导我如何将DataTable
值转换为string
,然后再从String
转换为DataTable
。
或者,如果有其他方法可以解决此special character
问题,请与我们联系?
答案 0 :(得分:1)
如果您需要替换DataTable
中的无效字符串值,您可以执行以下操作:
foreach (DataRow row in dt.Rows)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
if(dt.Columns[i].DataType == typeof(string))
row[i] = ReplaceHexadecimalSymbols((string)row[i]);
}
}
在将其添加到workbook