gpt4 book ai didi

C# GemBox Excel 导入错误

转载 作者:太空宇宙 更新时间:2023-11-03 20:43:31 27 4
gpt4 key购买 nike

我正在尝试使用 GemBox 将 excel 文件导入数据表,但我一直收到此错误:

在 SourceRowIndex:1 和 SourceColumnIndex:1 处提取到 DataTable 时,数据值无效。

据我所知,我的代码是正确的,我的文件也很好。有人有什么想法吗?

谢谢。

ExcelWorksheet Ew = ExFi.Worksheets[0];

for (int i = 0; i < Ew.Columns.Count; ++i)
{
if (Ew.Rows[0].Cells[0, i].Value != null)
dsTable.Columns.Add(Ew.Rows[0].Cells[0, i].Value.ToString(), typeof(string));
}

try
{
Ew.ExtractToDataTable(dsTable, Ew.Rows.Count, ExtractDataOptions.StopAtFirstEmptyRow, Ew.Rows[1], Ew.Columns[0]);
}

最佳答案

GemBox.Spreadsheet 组件不会在 ExtractToDataTable() 方法中自动将数字转换为字符串。

这主要是因为文化问题;有人会期望数字 12.4 被转换为“12.4”,而其他人会被转换为“12,4”。

因此,如果您的 Excel 文件包含值为 int 类型的单元格,并且相应列的类型为字符串 -> 将抛出异常。要覆盖它,您可以使用 ExcelWorksheet.ExtractDataEvent .

示例如下:

// Create new ExcelFile
ExcelFile ef = new ExcelFile();

// Add sheet
ExcelWorksheet ws = ef.Worksheets.Add("Sheet1");
// Fill sheet
for (int i = 0; i < 5; i++)
{
ws.Cells[i, 0].Value = i; // integer value
ws.Cells[i, 1].Value = "Row: " + i; // string value
}

// Initialize DataTable
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(string));
dt.Columns.Add("text", typeof(string));

// Manage ExtractDataError.WrongType error
ws.ExtractDataEvent += (sender, e) =>
{
if (e.ErrorID == ExtractDataError.WrongType)
{
e.DataTableValue = e.ExcelValue == null ? null : e.ExcelValue.ToString();
e.Action = ExtractDataEventAction.Continue;
}
};

// Extract data to DataTable
ws.ExtractToDataTable(dt, 1000, ExtractDataOptions.StopAtFirstEmptyRow, ws.Rows[0], ws.Columns[0]);

关于C# GemBox Excel 导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1702166/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com