我正在使用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; David&歌利亚; 10; 20;大卫&巨人
该调用抛出异常: “已经添加了具有相同键的项目”。 有没有办法在不更改输入csv数据的情况下避免此问题?
答案 0 :(得分:0)
&符号将在XML中以&
转义,并且您正在使用';'作为分隔符。
答案 1 :(得分:0)
这两个参数调用适用于我,因此您可以将其用作解决方法:
worksheet.Cells["A1"].LoadFromText(
new FileInfo(path), format
);
请注意,上面示例中的四个参数调用完全相同。
所以这个看起来像就像一个bug。直接从源代码中获取,四个参数重载:
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
时会爆炸。