【发布时间】:2017-02-02 03:47:35
【问题描述】:
我必须将数据从 VB6 应用程序中不同表单的多个 Flexgrid 传输到未安装 excel 的计算机中的 .xls 文件。这些 PC 中安装了 Openoffice、LibreOffice 等。
我开发了一个通用程序,它以 FlexGrid 作为参数并将其数据传输到 xls。此过程使用 DAO。由于各种 FlexGrid 中的各个列包含各种数据类型,因此在过程中我将字段定义为“dbText”类型。
t.Fields.Append t.CreateField(pFlxGrd.TextMatrix(0, j), dbText)
从任何网格传输到 xls 都可以正常工作。但是,一个问题是,对于每个包含数据的单元格,都会插入单引号以指示其文本类型的数据。
有什么方法可以删除或避免这些引号?由于数字数据将用于求和等,因此必须去掉这些引号。
【问题讨论】:
-
尝试使用数值数据类型,例如 dbInteger 或 dbLong?见msdn.microsoft.com/en-us/library/office/ff194420.aspx。
-
使用数字数据类型无济于事,因为该过程提供了一个网格作为参数,它只是将网格的数据发送到 Excel。并且在从网格标题创建 tabledef 中的字段时,它不会知道哪个是数字字段,哪个不是。
-
能否做到这一点取决于几件事。问题是 Jet Excel IISAM 必须将工作表或范围的每一列视为单一数据类型。文本通常是字符串,数字通常是双精度等。如果现有工作表/范围中的类型是混合的,事情可能会变得很冒险。根据第一个 MaxScanRows 中的内容(默认为 8),一列可能以 String 或 Double 结尾。