EPPlus LoadFromDataTable() 是双转义符号
EPPlus LoadFromDataTable() is double escaping ampersands
这是我的代码:
ExcelPackage pck = new ExcelPackage(stream);
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Rules");
ws.Cells["A1"].LoadFromDataTable(_rules, true);
ws.Cells[ws.Dimension.Address].AutoFitColumns();
ws.Cells[ws.Dimension.Address].Style.WrapText = true;
pck.Save();
_rules
DataTable 的行的文本中包含与号:&。比方说 AT&T
。查看 Excel 中的文件时,文本显示为 AT&T
。我深入研究 sharedStrings.xml 发现文本被双重转义为 AT&T
.
如何防止这种行为?我试过将文本用双引号引起来并注释掉 AutoFitColumns()
和 WrapText
行。
你确定它不在源代码中吗table?由于共享字符串是 xml 它必须转义任何符号。因此,如果源 table 中已有 AT&T
,那么您所看到的正是您所期望的。
所以,当我在格式好的和坏的文本之间交替时,你会看到同样的东西:
[TestMethod]
public void Amp_String_Test()
{
//
//Throw in some data
var datatable = new DataTable("tblData");
datatable.Columns.AddRange(new[] { new DataColumn("Col1", typeof(int)), new DataColumn("Col2", typeof(int)), new DataColumn("Col3", typeof(object)) });
for (var i = 0; i < 10; i++)
{
var row = datatable.NewRow(); row[0] = i; row[1] = i * 10;
//Alternate text
row[2] = i%2 == 0 ? "AT&T": "AT&T";
datatable.Rows.Add(row);
}
//Create a test file
var fi = new FileInfo(@"c:\temp\amptest.xlsx");
if (fi.Exists)
fi.Delete();
using (var pck = new ExcelPackage(fi))
{
var worksheet = pck.Workbook.Worksheets.Add("Sheet1");
worksheet.Cells.LoadFromDataTable(datatable, true);
pck.Save();
}
}
这是我的代码:
ExcelPackage pck = new ExcelPackage(stream);
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Rules");
ws.Cells["A1"].LoadFromDataTable(_rules, true);
ws.Cells[ws.Dimension.Address].AutoFitColumns();
ws.Cells[ws.Dimension.Address].Style.WrapText = true;
pck.Save();
_rules
DataTable 的行的文本中包含与号:&。比方说 AT&T
。查看 Excel 中的文件时,文本显示为 AT&T
。我深入研究 sharedStrings.xml 发现文本被双重转义为 AT&amp;T
.
如何防止这种行为?我试过将文本用双引号引起来并注释掉 AutoFitColumns()
和 WrapText
行。
你确定它不在源代码中吗table?由于共享字符串是 xml 它必须转义任何符号。因此,如果源 table 中已有 AT&T
,那么您所看到的正是您所期望的。
所以,当我在格式好的和坏的文本之间交替时,你会看到同样的东西:
[TestMethod]
public void Amp_String_Test()
{
//
//Throw in some data
var datatable = new DataTable("tblData");
datatable.Columns.AddRange(new[] { new DataColumn("Col1", typeof(int)), new DataColumn("Col2", typeof(int)), new DataColumn("Col3", typeof(object)) });
for (var i = 0; i < 10; i++)
{
var row = datatable.NewRow(); row[0] = i; row[1] = i * 10;
//Alternate text
row[2] = i%2 == 0 ? "AT&T": "AT&T";
datatable.Rows.Add(row);
}
//Create a test file
var fi = new FileInfo(@"c:\temp\amptest.xlsx");
if (fi.Exists)
fi.Delete();
using (var pck = new ExcelPackage(fi))
{
var worksheet = pck.Workbook.Worksheets.Add("Sheet1");
worksheet.Cells.LoadFromDataTable(datatable, true);
pck.Save();
}
}