编程高手之路—高手进阶—C++Builder 操作 Excel 笔者在实际工作中经常用 Excel 表做数据报表,大多数表格的数据都要从数据库中读取,这样我就用 C++Builder 做了一个报表程序,方便了很多,现在把它共享给 C++Builder爱好者们,就算为丰富 C++Builder 的文档资料做点事情吧。 首先把 Excel 报表文件保存到一个指定目录下,最好放在可执行程序的子目录下,作为模板文件。可以把报表标题、表头等设置好。这里是保存在 trpt 子目录下。 然后建一个 report 目录,作为报表目标文件夹,存放填好数据的报表,可以由用户直接操作。 首先确定在你的机器中装有 Office。这里一 Office2000 为例。 在 C++Builder 中新建一个工程,在窗体 Form1 上面放一个两个按钮 SaveButton 和ReadButton,分别用来保存数据到 Excel 表和显示刚刚保存的 Excel 表。 在 SaveButton 按钮的单击事件中把从数据库中取到的数据放入到指定的 Excel 表中并将改文件拷贝到 report 目录下。在 ReadButto 按钮的单击事件中显示 report 目录下的报表文件,方便用户修改和另外保存。 在 Form1.h 头文件中定义几个变量: private: Variant Ex,Wb,Sheet,ERange,EBorders; 并在文件头中包含如下语句: #include Excel_2K_SRVR.h #include 在 Form1.cpp 的文件头中加入 #pragma link Excel_2K_SRVR 主要代码如下: void __fastcall TForm1:: SaveButtonClick(TObject *Sender) { try { SaveButton->Enabled = false; ReadButton->Enabled = false;//使两个按钮无效 file://取报表文件CardSend.xls 的完整目录名 AnsiString ExcelFileName = GetCurrentDir()+\\trpt\\table.xls; if(!FileExists(ExcelFileName)) { Application->MessageBox(报表模板文件不存在,无法打开!, 错误,MB_ICONSTOP|MB_OK); return; } file://建立Excel 的Ole 对象Ex try { Ex = Variant::CreateObject(Excel.Application); } catch(...) { Application->MessageBox(无法启动Excel,错误,MB_ICONSTOP|MB_OK); return; } file://设置Excel 为不可见 Ex.OlePropertySet(Visible,false); file://打开指定的Excel 报表文件。报表文件中最好设定只有一个Sheet。 Ex.OlePropertyGet(WorkBooks).OleProcedure(Open,ExcelFileName.c_str()); Wb = Ex.OlePropertyGet(ActiveWorkBook); Sheet = Wb.OlePro...