上一篇:图解微软交互动画软件sparkle主要功能 >>
C++将DBGrid中数据导出到Word和Excel
| 天极软件专题专区精选 到天极软件“读编交流区”畅所欲言 | |||
| Google专区 | POPO专区 | QQ专区 QQ挂机 | 了解Web2.0 |
| Flash MX 视频教程 | Photoshop视频教程 | 网页设计视频教程 | 照片处理数字暗房 |
| PPT动画演示教程 | Excel动画教程集 | Word动画演示教程 | Windows Vista专区 |
| 特洛伊木马专区 | 黑客知识教程专区 | 防火墙应用专区 | 注册表应用专区 |
| Windows API开发专区 | 网络编程专区 | VB数据库编程专区 | 图像处理与多媒体编程 |
一、将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); } |
下一篇:Visual C++编程技巧小结 >>
相关文章:
- · JavaScript:世界上误解最深的语言
- · 金融时报:软件“相”人不靠谱
- · 调查显示开源数据库软件正逐步赢得市场
- · 美流行网上查毕业生背景 博客泄不雅遭拒聘
- · 网络门户PK参与时代
- · BitComet高级使用技巧六则
- · 比比谁更快 三种主流下载方式横向评测
- · 迅雷5正式版火热试用手记
- · 网页广告屏蔽软件大比拼
- · RSS在线订阅 享用美味香肠
- · IE新奇使用技巧28则
- · 免费网络电视软件PPLive正式版1.0.9.4
- · 巧用自动填表软件 让密码输入更加轻松
- · 1.6今日新软 冰盾防火墙标准版 v7.1
- · 巧用FlashPaper将文档变成Flash格式
- · 小编原创:SEO优化工具之搜索热词检索
- · 让你的IE成为FTP客户端
- · 移动设备视频格式转换指南
- · 用RAR制作简易“文件保险箱”
- · 参与即有奖 百度影视创意故事火热征集
- · 让你的CLCL剪贴板程序更加靓丽
- · “一键GHOST”傻瓜式系统备份与恢复
- · 百度影视搜索全面优化注册、收费流程
- · 超级兔子魔法设置 个人版 7.10
- · PowerDVD中文版又出新版本
- · Google搜索引擎的十大应用
- · 263 再次出免费邮箱了
- · 我的IE我做主-IE插件管理专家
- · 最新Nero 7网上泄漏版截图
- · 200个Gmail名额任你来拿!
- · 菜鸟宝典:克隆软件Ghost初级使用教程
- · 手机绑定玩QQ——最最基础篇
- · 手机绑定玩QQ——高手速成篇
- · 手机绑定玩QQ——用户指令列表
- · 解除QQ手机捆绑的超简单方法
- · 教你开通MSN Mobile移动短信服务
- · MSN Mobile移动短信服务常见问题解答
- · Windows Live Mail技巧与常见问题解答
