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 时会爆炸。