outEXcel.txt
资源名称:outEXcel.rar [点击查看]
上传用户:yangrryang
上传日期:2022-07-21
资源大小:1k
文件大小:5k
源码类别:
文件操作
开发平台:
C++ Builder
- 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);
- }
- //----------------------------------------------------------------------------
- // 抱歉,这个提示又来了,为了防止不负责任的转载者,只好在此留些信息。
- // 作者:ccrun(老妖) info@ccrun.com
- // 本文转自 C++Builder 研究 - http://www.ccrun.com/article/go.asp?i=635&d=g75jbn
- //----------------------------------------------------------------------------
- // 先将列名写入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);
- }
- // 测试代码
- DBGrid2Excel(DBGrid1, "C:\ccrun\123.xls");