从数据表中删除特殊字符

本文关键字:特殊字符 删除 数据表 | 更新日期: 2023-09-27 17:56:17

我有一个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# 十六进制值0x12,是一个无效字符

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问题?

从数据表中删除特殊字符

如果需要

替换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之前执行此操作