手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

将ListView中的内容导出到Word和Excel(新)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

经常看到有网友发帖子询问如何将ListView中的内容导出到Excel或Word文档中,其实在BCB中用OLE技术来操作,并不复杂,大概是有的人懒的写吧,于是ccrun(老妖)花了点时间写了以下两个函数,实现了将本程式中ListView中内容导出到Excel文档和Word文档。看在写代码很辛苦的份上,请在转载时留下出处和原作者信息。Thank了。:D

假如您有好的想法,欢迎来信讨论: info@ccrun.com

2005.10.13 v0.2
导出表格增加了标题一栏
2005.10.12 v0.1
初版发布

//---------------------------------------------------------------------------
// 将ListView中的内容导出到Word文档
// v0.2 by ccrun(老妖) 2005.10.13
//---------------------------------------------------------------------------
void __fastcall ListView2Word(TListView *lv, String strDocFile)
{
Variant vWordApp, vTable, vCell;
try
{
vWordApp = Variant::CreateObject("Word.Application");
}
catch(...)
{
MessageBox(0, "启动 Word 出错, 可能是没有安装Word.",
"ListView2Doc", 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", lv->Font->Size);
vSelect.OlePropertyGet("Font").OlePropertySet("Name", lv->Font->Name.c_str());
// 要插入表格的行数
int nRowCount(lv->Items->Count 1);
nRowCount = nRowCount < 2? 2: nRowCount;
// 要插入表格的列数
int nColCount(lv->Columns->Count);
nColCount = nColCount < 1? 1: nColCount;
// 在Word文档中插入和ListView行数列数相同的一个表格
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;
if(lv->Columns->Count > i)
nColWidth = lv->Columns->Items[i]->Width;
else
nColWidth = 100; // 假如没有配置列,就随便配置个默认值
vTable.OlePropertyGet("Columns").OleFunction("Item", i 1)
.OlePropertySet("PreferredWidthType", 3); // wdPreferredWidthPoints
vTable.OlePropertyGet("Columns").OleFunction("Item", i 1)
.OlePropertySet("PreferredWidth", nColWidth * 2);
}
//----------------------------------------------------------------------------
// 抱歉,这个提示又来了,为了防止不负责任的转载者,只好在此留些信息。
// 作者:ccrun(老妖) info@ccrun.com

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!