Компонент GemBox.Spreadsheet автоматически не преобразует числа в строки в методе ExtractToDataTable ().
Это в основном из-за проблем культуры; кто-то ожидает, что число 12,4 преобразуется в «12,4», а кто-то - в «12,4».
Таким образом, если ваш файл Excel имеет ячейку со значением типа int, а соответствующий столбец имеет тип string -> будет сгенерировано исключение. Чтобы переопределить это, вы можете использовать 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]);