C++ Builder DBGrid 在 xlsx 文件中导出到 Excel

标签 c++ excel delphi c++builder

以前,我总是使用TXLSWorkbook 和SaveDialog 从DBGrid 中导出excel(.xls)。

但是,现在导出的数据太大,.xls文件无法填满所有数据。

我尝试导出 .xlsx 文件,但 TXLSWorkbook 似乎不支持 .xlsx 文件。

当我打开 .xlsx 文件时,错误消息说文件已损坏。

我是不是错过了什么,或者我必须找到另一种方法来导出 .xlsx 文件?

这是我的代码。感谢收看。

TXLSWorkbook *WorkBook;
IXLSWorksheet *WorkSheet;
IXLSRange *Cells;
int Row;
TDateTime dt=Now();
String date = dt;

date = FormatDateTime("yyyymmdd",date);
FileName = date+".xls";
WorkBook = new TXLSWorkbook();

WorkSheet = WorkBook->Sheets->Add();

Cells = WorkSheet->Cells;
.
.
.
(input item to Cells...)
.
.
.
SaveDialog1->FileName = FileName;
if( SaveDialog1->Execute() == true ) {

    WorkBook->SaveAs(SaveDialog1->FileName);

}

最佳答案

我不喜欢发布建议使用另一个 3rd 方库的答案,但在这种情况下它可能是合适的。

参见:http://www.scalabium.com/sme/

这是一个库,可以将数据库数据从 Delphi 应用程序导出为多种格式,包括 Excel 文件格式。它不使用 COM,因此不受 Excel 的 COM 实现强加的限制,但我不确定 TXLSWorkBook 是否使用 COM。据我所知,SMExport 直接写入 Excel 格式的文件。

有可用的试用版,iirc。

关于C++ Builder DBGrid 在 xlsx 文件中导出到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45501720/

相关文章:

excel - 计算一列是否包含并且在另一列中是唯一的

.net - 如何使用Delphi 7检测.net框架版本

c++ - Qt,关于UDPlink的线程安全

vba - 使用VBA设置系统日期和时间

c++ - 使用 MPI 在处理器之间分配工作,但所有处理器都在完成整个工作,而不是只做其中的一部分

Excel VBA : How to write column name with commercial at "@" in it

database - 在 TDataset Delphi 中交换两条记录的最佳方法?

delphi - 需要在 Delphi 字符串复制之前分配内存吗?

c++ - 用蒙特卡洛方法估计 Pi,循环似乎提前终止

c++ - 有没有办法修改模板装饰器中使用的静态方法中的类属性?