【问题标题】:Guid in Excel Using SpreadSheetGear使用 SpreadSheetGear 的 Excel 指南
【发布时间】:2014-12-16 23:18:04
【问题描述】:

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

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

似乎 excel 不能支持 Guids 作为变量/数据类型。这是正常的吗?反正我不需要数据可以很容易地转换成文本格式,但我只是想完全理解这个问题。

这是一个带有以下错误的示例代码:无效的单元格值类型。

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();
}

【问题讨论】:

    标签: excel datatable guid spreadsheetgear variable-types


    【解决方案1】:

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

    ...将指定单元格的值设置为 System.String, System.Double,System.Int32,System.Int64,System.Int16,System.Char, System.Boolean、System.DateTime、SpreadsheetGear.ValueError、 System.Decimal、System.DBNull、object[,] 或 null

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

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

    【讨论】:

    • 好的,谢谢蒂姆没有条件查看 IRange.Value 属性,但这是有道理的。同时 Excel 无法读取 Guid 是有道理的。谢谢你快速的回复!!干杯
    猜你喜欢
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多