2017-08-04 49 views
0

之前,我总是使用TXLSWorkbook和SaveDialog从DBGrid中导出excel(.xls)。C++ Builder DBGrid在xlsx文件中导出到Excel

但是,现在导出的数据太大,.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); 

} 

+0

我会推荐使用TDataset。您可以通过ADO直接保存为Excel文件。如何设置连接字符串的外观[这里](https://www.connectionstrings.com/excel/) –

回答

1

我不喜欢张贴的答案,是使用其他第三方库的建议,但在这种情况下,它可能是适当的。

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

这是可以从德尔福的应用程序数据库导出数据到各种格式,包括Excel文件格式的库。它不使用COM,所以不受Excel的COM实现限制,尽管我不确定TXLSWorkBook是否使用COM。 AFAIK,SMExport直接写入Excel格式的文件。

有一个试用版,iirc。

+0

感谢您的分享! – kim

+0

但是我们可以导出到没有第三方来源的xlsx文件吗? – kim

+0

如果您知道如何编写自己的代码来将数据写入xlsx格式的文件,那么当然可以。我认为MS已经发布了这个规范。 – MartynA