一、将DBGrid中的内容导出到Word文档
| //--------------------------------------------------------------------------- // 将DBGrid中的数据导出到Word文档 //--------------------------------------------------------------------------- void __fastcall DBGrid2Word(TDBGrid *dbg, String strDocFile) { if(!dbg->DataSource->DataSet->Active) // 数据集没有打开就返回 return; Variant vWordApp, vTable, vCell; try { vWordApp = Variant::CreateObject("Word.Application"); } catch(...) { MessageBox(0, "启动 Word 出错, 可能是没有安装Word.","DBGrid2Word", MB_OK | MB_ICONERROR); vWordApp = Unassigned; return; } // 隐藏Word界面 vWordApp.OlePropertySet("Visible", false); // 新建一个文档 vWordApp.OlePropertyGet("Documents").OleFunction("Add"); Variant vSelect = vWordApp.OlePropertyGet("Selection"); // 配置一下字体,大小 vSelect.OlePropertyGet("Font").OlePropertySet("Size", dbg->Font->Size); vSelect.OlePropertyGet("Font").OlePropertySet("Name", dbg->Font->Name.c_str()); // 要插入表格的行数 int nRowCount(dbg->DataSource->DataSet->RecordCount 1); nRowCount = nRowCount < 2? 2: nRowCount; // 要插入表格的列数 int nColCount(dbg->Columns->Count); nColCount = nColCount < 1? 1: nColCount; // 在Word文档中插入和DBGrid行数列数基本相同的一个表格 vWordApp.OlePropertyGet("ActiveDocument").OlePropertyGet("Tables").OleProcedure("Add", vSelect.OlePropertyGet("Range"), nRowCount, // 行数 nColCount, // 列数 1, // DefaultTableBehavior:=wdWord9TableBehavior 0); // AutoFitBehavior:=wdAutoFitFixed // 操作这个表格 vTable = vWordApp.OlePropertyGet("ActiveDocument"). OleFunction("Range").OlePropertyGet("Tables").OleFunction("Item", 1); // 配置单元格的宽度 for(int i=0; i<nColCount; i ) { int nColWidth = dbg->Columns->Items[i]->Width; vTable.OlePropertyGet("Columns").OleFunction("Item", i 1) .OlePropertySet("PreferredWidthType", 3); // wdPreferredWidthPoints vTable.OlePropertyGet("Columns").OleFunction("Item", i 1) .OlePropertySet("PreferredWidth", nColWidth); } // 先将列名写入Word表格 for(int j=0; j<dbg->Columns->Count; j ) { vCell = vTable.OleFunction("Cell", 1, j 1); vCell.OlePropertySet("Range", dbg->Columns->Items[j]->FieldName.c_str()); // 列名单元格背景颜色 // wdColorGray125 vCell.OlePropertyGet("Shading").OlePropertySet("BackgroundPatternColor", 14737632); } // 将DBGrid中的数据写入Word表格 dbg->DataSource->DataSet->First(); for(int i=0; i<nRowCount; i ) { // 63 63 72 75 6E 2E 63 6F 6D for(int j=0; j<dbg->Columns->Count; j ) { vCell = vTable.OleFunction("Cell", i 2, j 1); vCell.OlePropertySet("Range", dbg->DataSource->DataSet->FieldByName( dbg->Columns->Items[j]->FieldName)->AsString.c_str()); } dbg->DataSource->DataSet->Next(); } // 保存Word文档并退出 vWordApp.OlePropertyGet("ActiveDocument").OleProcedure("SaveAs", strDocFile.c_str()); vWordApp.OlePropertyGet("ActiveDocument").OleProcedure("Close"); Application->ProcessMessages(); vWordApp.OleProcedure("Quit"); Application->ProcessMessages(); vWordApp = Unassigned; // 工作结束 MessageBox(0, "DBGrid2Word 转换结束!","DBGrid2Word", MB_OK | MB_ICONINFORMATION); } |
二、将DBGrid中的内容导出到Excel文档
| //--------------------------------------------------------------------------- // 将DBGrid中的数据导出到Excel文档 //--------------------------------------------------------------------------- void __fastcall DBGrid2Excel(TDBGrid *dbg, String strXlsFile) { if(!dbg->DataSource->DataSet->Active) // 数据集没有打开就返回 return; Variant vExcelApp, vSheet; try { vExcelApp = Variant::CreateObject("Excel.Application"); } catch(...) { MessageBox(0, "启动 Excel 出错, 可能是没有安装Excel.","DBGrid2Excel", MB_OK | MB_ICONERROR); return; } // 隐藏Excel界面 vExcelApp.OlePropertySet("Visible", false); // 新建一个工作表 vExcelApp.OlePropertyGet("Workbooks").OleFunction("Add", 1); // 工作表 // 操作这个工作表 vSheet = vExcelApp.OlePropertyGet("ActiveWorkbook").OlePropertyGet("Sheets", 1); // 配置Excel文档的字体 vSheet.OleProcedure("Select"); vSheet.OlePropertyGet("Cells").OleProcedure("Select"); vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Size", dbg->Font->Size); vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Name",dbg->Font->Name.c_str()); vExcelApp.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("FontStyle", "常规"); vSheet.OlePropertyGet("Cells", 1, 1).OleProcedure("Select"); // 表格的行数 int nRowCount(dbg->DataSource->DataSet->RecordCount 1); nRowCount = nRowCount < 2? 2: nRowCount; // 表格的列数 int nColCount(dbg->Columns->Count); nColCount = nColCount < 1? 1: nColCount; // 配置单元格的宽度 for(int i=0; i<nColCount; i ) { int nColWidth = dbg->Columns->Items[i]->Width; vExcelApp.OlePropertyGet("Columns", i 1).OlePropertySet("ColumnWidth", nColWidth / 7); } // 先将列名写入Excel表格 for(int j=0; j<dbg->Columns->Count; j ) { // 标题行的行高 vExcelApp.OlePropertyGet("Rows", 1).OlePropertySet("RowHeight", 20); vSheet.OlePropertyGet("Cells", 1, j 1) .OlePropertySet("Value", dbg->Columns->Items[j]->FieldName.c_str()); // 配置列名单元格的背景色 Variant vInter = vSheet.OlePropertyGet( "Cells", 1, j 1).OlePropertyGet("Interior"); vInter.OlePropertySet("ColorIndex", 15); // 灰色 vInter.OlePropertySet("Pattern", 1); // xlSolid vInter.OlePropertySet("PatternColorIndex", -4105); // xlAutomatic } // 将DBGrid中的数据写入Excel表格 dbg->DataSource->DataSet->First(); for(int i=0; i<nRowCount; i ) { // 普通数据行的行高16 vExcelApp.OlePropertyGet("Rows", i 2).OlePropertySet("RowHeight", 16); // 63 63 72 75 6E 2E 63 6F 6D for(int j=0; j<dbg->Columns->Count; j ) { vSheet.OlePropertyGet("Cells", i 2, j 1).OlePropertySet("Value", dbg->DataSource->DataSet->FieldByName( dbg->Columns->Items[j]->FieldName)->AsString.c_str()); } dbg->DataSource->DataSet->Next(); } // 保存Excel文档并退出 vExcelApp.OlePropertyGet("ActiveWorkbook").OleFunction("SaveAs", strXlsFile.c_str()); vExcelApp.OleFunction("Quit"); vSheet = Unassigned; vExcelApp = Unassigned; // 工作结束 MessageBox(0, "DBGrid2Excel 转换结束!","DBGrid2Excel", MB_OK | MB_ICONINFORMATION); }
文章整理:西部数码--专业提供域名注册、虚拟主机服务 相关文章
热点关注
IDC资讯
虚拟主机
域名注册
托管租用
vps主机
智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源 网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧 行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒 网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它 服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护 软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer 网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash 程序设计 Java技术 C/C++ VB delphi 网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术 操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD |




