gpt4 book ai didi

excel - 使用 SpreadSheetGear 的 Excel 指南

转载 作者:行者123 更新时间:2023-12-03 02:46:54 32 4
gpt4 key购买 nike

我只需要确认/快速信息。我觉得这是一个显而易见的问题,但只是想确定并完全理解正在发生的事情。在网上找不到太多详细信息。

我正在使用 SpreadSheetGear 从数据表转储电子表格中的数据。这些表中有一些指南。现在,当我尝试从数据表中复制时,会收到一条错误消息,指出数据类型错误,除非我使用 AllText 标志进行导入或删除数据表中包含 Guid 的列。

似乎 Excel 不支持 Guid 作为变量/数据类型。这是正常的吗?无论如何,我不一定需要可以轻松转换为文本格式的数据,但我只是想完全理解这个问题。

以下是示例代码,但存在以下错误:单元格值类型无效。

public void Test()
{
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(Guid));
table.Columns.Add("Drug", typeof(string));
table.Columns.Add("Patient", typeof(string));
table.Columns.Add("Date", typeof(DateTime));

table.Rows.Add(Guid.NewGuid(), "Indocin", "David", DateTime.Now);
table.Rows.Add(Guid.NewGuid(), "Enebrel", "Sam", DateTime.Now);
table.Rows.Add(Guid.NewGuid(), "Hydralazine", "Christoff", DateTime.Now);

IWorkbook wrk = Factory.GetWorkbook();
IWorksheet wsht = wrk.Worksheets["Sheet1"];
IRange rng = wsht.Cells["A1"];
rng.CopyFromDataTable(table, SpreadsheetGear.Data.SetDataFlags.None);
wrk.SaveAs("C:\\MyData.xls",FileFormat.OpenXMLWorkbook);
wrk.Close();
}

最佳答案

使用IRange。 CopyFromDataTable (...) 没有SetDataFlags .AllText 标志基本上就像使用循环来设置 IRange。 Value对于 DataTable 中的每个数据“单元格”,这意味着此传入 DataTable 数据中使用的数据类型受 IRange 的 setter 要求的约束。 Value ,其中指出:

...sets the value of the specified cell as a System.String, System.Double, System.Int32, System.Int64, System.Int16, System.Char, System.Boolean, System.DateTime, SpreadsheetGear.ValueError, System.Decimal, System.DBNull, object[,] or null

因为 Guid 不是与 IRange 一起使用的有效类型。 Value ,在 DataTable 中使用此数据类型也不起作用。

当您指定SetDataFlags时.AllText 标志,SpreadsheetGear 首先对 DataTable 中的每个数据“单元格”调用 ToString(),因此所有传入的数据类型都将被接受,无论它是否在上面的列表中。

关于excel - 使用 SpreadSheetGear 的 Excel 指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26491662/

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