EPPlus csv 解析与符号(“&”)问题
EPPlus csv parsing ampersand("&") issue
我正在使用 EPPlus LoadFromText 将 csv 解析为 excel 文件。
var format = new ExcelTextFormat();
format.Delimiter = ';';
format.Encoding = System.Text.Encoding.UTF8;
format.Culture = System.Globalization.CultureInfo.GetCultureInfo("pt-pt");
using (ExcelPackage package = new ExcelPackage(new FileInfo(excelFilePath)))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(worksheetsName);
worksheet.Cells["A1"].LoadFromText(new FileInfo(fileName), format, OfficeOpenXml.Table.TableStyles.None, false);
package.Save();
}
当一行中有不止一列带有&符号(“&”)时:
001;大卫与歌利亚;10;20;大卫与歌利亚
调用抛出异常:
"An item with the same key has already been added"。
有没有办法在不更改输入 csv 数据的情况下避免这个问题?
& 符号将在 XML 中转义为 &
而您使用的是“;”作为分隔符。
两个参数调用对我有用,因此您可以使用它作为解决方法:
worksheet.Cells["A1"].LoadFromText(
new FileInfo(path), format
);
请注意,上面示例中的四个参数调用的作用完全相同。
所以这个看起来像一个错误。直接摘自源码,四个参数重载:
public ExcelRangeBase LoadFromText(string Text, ExcelTextFormat Format, TableStyles TableStyle, bool FirstRowIsHeader)
{
ExcelRangeBase excelRangeBase = this.LoadFromText(Text, Format);
ExcelTable excelTable = this._worksheet.Tables.Add(excelRangeBase, "");
excelTable.ShowHeader = FirstRowIsHeader;
excelTable.TableStyle = TableStyle;
return excelRangeBase;
}
当源数据中有 & 符号时尝试添加 ExcelTable
时会爆炸。
我正在使用 EPPlus LoadFromText 将 csv 解析为 excel 文件。
var format = new ExcelTextFormat();
format.Delimiter = ';';
format.Encoding = System.Text.Encoding.UTF8;
format.Culture = System.Globalization.CultureInfo.GetCultureInfo("pt-pt");
using (ExcelPackage package = new ExcelPackage(new FileInfo(excelFilePath)))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(worksheetsName);
worksheet.Cells["A1"].LoadFromText(new FileInfo(fileName), format, OfficeOpenXml.Table.TableStyles.None, false);
package.Save();
}
当一行中有不止一列带有&符号(“&”)时:
001;大卫与歌利亚;10;20;大卫与歌利亚
调用抛出异常: "An item with the same key has already been added"。 有没有办法在不更改输入 csv 数据的情况下避免这个问题?
& 符号将在 XML 中转义为 &
而您使用的是“;”作为分隔符。
两个参数调用对我有用,因此您可以使用它作为解决方法:
worksheet.Cells["A1"].LoadFromText(
new FileInfo(path), format
);
请注意,上面示例中的四个参数调用的作用完全相同。
所以这个看起来像一个错误。直接摘自源码,四个参数重载:
public ExcelRangeBase LoadFromText(string Text, ExcelTextFormat Format, TableStyles TableStyle, bool FirstRowIsHeader)
{
ExcelRangeBase excelRangeBase = this.LoadFromText(Text, Format);
ExcelTable excelTable = this._worksheet.Tables.Add(excelRangeBase, "");
excelTable.ShowHeader = FirstRowIsHeader;
excelTable.TableStyle = TableStyle;
return excelRangeBase;
}
当源数据中有 & 符号时尝试添加 ExcelTable
时会爆炸。