将ListView中的内容导出到Word和Excel(新)
2008-02-23 05:37:51来源:互联网 阅读 ()
经常看到有网友发帖子询问如何将ListView中的内容导出到Excel或Word文档中,其实在BCB中用OLE技术来操作,并不复杂,大概是有的人懒的写吧,于是ccrun(老妖)花了点时间写了以下两个函数,实现了将本程式中ListView中内容导出到Excel文档和Word文档。看在写代码很辛苦的份上,请在转载时留下出处和原作者信息。Thank了。:D
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
假如您有好的想法,欢迎来信讨论: 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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 通过继承实现不同的CheckBox风格
下一篇: 常见的三种中文内码转换代码
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash