我正在评估 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
}
我建议您发布更多代码。 这对我使用 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
使用此文件: