EPPlus ToDataTable 重复列名

问题描述 投票:0回答:1

我正在评估 EPPlus 包来处理 Excel 文件,通过 ToDataTable 方法将工作表加载到 .NET DataTables 中。 但是,当我尝试加载标题中具有重复列名称的工作表时,我收到以下错误消息。

“重复的列名称:....”

我读过,EPPlus 据说通过在重复的名称上附加数字来处理重复的列名称,但这不是我的经验,相反,ToDataTable 正在崩溃,我找不到任何合适的加载选项来防止它崩溃。

我尝试设置 ColumnNameParsingStrategy 选项,但没有任何效果。

//
// Summary:
//     Defines options for how to build a valid property or DataTable column name out
//     of a string
public enum NameParsingStrategy
{
    //
    // Summary:
    //     Preserve the input string as it is
    Preserve = 0,
    //
    // Summary:
    //     Replace any spaces with underscore
    SpaceToUnderscore = 1,
    //
    // Summary:
    //     Remove all spaces
    RemoveSpace = 2
}
c# excel duplicates epplus
1个回答
0
投票

我建议您发布更多代码。 这对我使用 7.5.2 版本和 Xunit 来说效果很好:

[Fact]
public void DuplicateColumnNameTest()
{
    var fileInfo = new FileInfo("c:\\temp\\test1.xlsx");
    using var pkg = new ExcelPackage(fileInfo);
    var worksheet = pkg.Workbook.Worksheets.First();

    var table = worksheet.Tables.First();
    foreach (var column in table.Columns)
    {
        _testOutputHelper.WriteLine(column.Name);
    }

    var dataTable = table.ToDataTable();
    foreach (DataColumn column in dataTable.Columns)
    {
        _testOutputHelper.WriteLine(column.ColumnName);
    }
    _testOutputHelper.WriteLine("Finished");
}

在输出中给出这个:

ColA
ColB 
ColB2
ColA
ColB
ColB2
Finished

使用此文件:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.