【问题标题】:Creating an Excel Sheet with ADO.NET (OleDb) --> What DataTypes are Supported?使用 ADO.NET (OleDb) 创建 Excel 工作表 --> 支持哪些数据类型?
【发布时间】:2010-01-20 13:40:56
【问题描述】:

我尝试使用 ADO.NET (OleDb) 创建 Excel (2003) 工作表。

我能够使用 OleDbCommand 创建工作表:

var cnnString = "Provider=Microsoft.Jet.OLEDB.4.0;...";
var cnn = new OleDbConnection(cnnString);
var cmd = cnn.CreateCommand();
cnn.Open();
cmd.CommandText = "CREATE TABLE MySheet (ID char(255), Field1 char(255))";
cmd.ExecuteNonQuery();

按预期工作。

这是我的问题: Excel 在 CREATE TABLE 命令中支持哪些数据类型(如 char(255))?我做了谷歌,但没有找到任何文档或提示。

感谢您的帮助。

【问题讨论】:

    标签: c# excel ado.net oledb


    【解决方案1】:

    Excel 只能识别有限的一组data types。例如:

    • 所有数字列都是双精度数
    • 所有字符串列(除了备注列)都是 255 个字符的 Unicode 字符串

    数字

    所有版本的 Excel:

    • 8 字节双精度
    • [signed] short [int] – 用于布尔值和整数
    • 无符号短 [int]
    • [signed long] int

    字符串

    所有版本的 Excel:

    • [signed] char * – 最多 255 个字符的以 null 结尾的字节字符串
    • unsigned char * – 最多 255 个字符的按长度计算的字节字符串

    仅限 Excel 2007+:

    • unsigned short * – 最多 32,767 个字符的 Unicode 字符串,可以以 null 结尾或计算长度

    【讨论】:

      【解决方案2】:

      直接使用 Excel 对象模型总是会得到更好的结果,并且不需要更多的代码。见example on SO

      或者,如果您想要真正热衷,可以尝试使用 Open XML SDK 2.0 for Microsoft Office

      【讨论】:

      • 我不能使用对象模型,因为我必须在服务器上创建 excel。
      • 然后看看 Open XML SDK 2.0。仍然是一种更有效和更精确的生成 .xlsx 的方式。如果您需要 .xls,最好使用一些第三方组件?
      • Office 2003 有一个更新为 r/w .xslx 文档等。IIRC 它被称为“2003 Compatibility FileFormatConverters”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多