社区
ATL
帖子详情
请问在vc中如何通过程序在word文当中插入表格,以及在表格的特定位置中写入字符?
myazhe
2003-08-21 01:07:08
请问在vc中如何通过程序在word文当中插入表格,以及在表格的特定位置中写入字符
...全文
167
7
打赏
收藏
请问在vc中如何通过程序在word文当中插入表格,以及在表格的特定位置中写入字符?
请问在vc中如何通过程序在word文当中插入表格,以及在表格的特定位置中写入字符
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
廿间楼主
2003-08-22
打赏
举报
回复
首先,用ClassWizard添加word vba类库,Add Class-->From a type library,从office安装目录“c:\program files\Microsoft office\office”中选择MSWORD9.OLB,然后选择所有类,完成后,ClassWizard会自动添加Msword9.h,Msword9.cpp两个文件。
然后,在程序文件中#include "msword9.h",在你的函数中添加如下代码:
COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
_Application WordApp;
if (!WordApp.CreateDispatch("Word.Application",NULL))
{
AfxMessageBox("创建MS-WORD服务失败!");
exit(1);
} ;
WordApp.SetVisible(TRUE);
Documents oDocs;
oDocs = WordApp.GetDocuments();
_Document oDoc;
oDoc = oDocs.Add(vOpt, vOpt, vOpt, COleVariant((short)true));
oDoc.Activate();
Range oRange;
Selection oSelection;
oSelection = WordApp.GetSelection();
oRange = oSelection.GetRange();
Tables oTables;
Table oTable;
oTables = oDoc.GetTables();
oTable = oTables.Add(oRange, 2, 2, COleVariant((short)1), COleVariant((short)0));//第二、第三个参数:2,2,表示建立2×2表格
Cell oCell;
oCell = oTable.Cell(0, 0);//选择第一行,第一列所在的单元格
oRange = oCell.GetRange();
oRange.SetText("12345");
karlson0211
2003-08-21
打赏
举报
回复
楼上已经非常充分了,在补充一句,你要先建立一个WORD摸板
bootmark:在WORD中插入了书签的地方
Cell:表格单元格
gzshd
2003-08-21
打赏
举报
回复
void CReportDemoDlg::OnStartword()
{
Table table;
Tables tables;
if (!WordApp.CreateDispatch("Word.Application",NULL))
{
AfxMessageBox("创建MS-WORD服务失败!");
exit(1);
} ;
WordApp.SetVisible(true);
docs=WordApp.GetDocuments();
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
COleVariant start_line,end_line;
COleVariant Dot("c:\\test.dot");
//使用test.dot作为模板建立新文档
doc=docs.Add(&Dot,&covOptional);
//获得DOC文档的书签集
bootmarks=doc.GetBookmarks();
//第一到三列的的书签名分别是rol1、rol2、rol3
COleVariant tem1("rol1");
bootmark=bootmarks.Item(&tem1);
range=bootmark.GetRange();
//设置列标题
range.SetText("列标题1");
COleVariant tem2("rol2");
bootmark=bootmarks.Item(&tem2);
range=bootmark.GetRange();
range.SetText("列标题2");
COleVariant tem3("rol3");
bootmark=bootmarks.Item(&tem3);
range=bootmark.GetRange();
range.SetText("列标题3");
//设置报表报送时间
COleVariant tem4("time");
bootmark=bootmarks.Item(&tem4);
range=bootmark.GetRange();
range.SetText("2002年1月1日");
//设置单元格内容
tables=doc.GetTables();
table=tables.Item(1);
Cell cell;
for(int i=2;i<=9;i++)
{
for(int ii=1;ii<=3;ii++)
{
cell=table.Cell(i,ii);
range=cell.GetRange();
range.SetText("????");
}
}
}
//进行打印预
void CReportDemoDlg::OnPrintpreview()
{
//如果没有DOC文档打开
if(docs.m_lpDispatch==NULL)
{
AfxMessageBox("尚未输出报表到WORD,无法进行打印预览");
return;
}
else
{
if(!WordApp.GetPrintPreview())
//开始打开预览
WordApp.SetPrintPreview(1);
else
WordApp.SetPrintPreview(0);
}
}
//向打印机输出报表
void CReportDemoDlg::OnPrint()
{
if(docs.m_lpDispatch==NULL)
{
AfxMessageBox("无报表可供打印!");
return;
}
else
{
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
//直接向打印机输出报表
doc.PrintOut(covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,
covOptional,covOptional);
}
}
//保存报表文档
void CReportDemoDlg::OnSaveAs()
{
if(docs.m_lpDispatch==NULL)
{
AfxMessageBox("尚未输出报表到WORD,无法保存");
return;
}
else
{
OPENFILENAME ofn;
TCHAR lpstrFilename[MAX_PATH] = "";
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = m_hWnd;
ofn.lpstrFilter ="Microsoft Word文档(.doc)\0*.doc\0";
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFile=lpstrFilename;
ofn.hInstance=AfxGetInstanceHandle();
ofn.Flags=OFN_EXPLORER;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
//出现“另存为”对话框
if(GetSaveFileName( &ofn)==IDOK)
{
CString sFile =ofn.lpstrFile;
try
{
doc.SaveAs(COleVariant(sFile),
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional);
}
catch(COleException *e)
{
LPVOID lpMsg;
::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, NULL, e->m_sc,
MAKELANGID(LANG_NEUTRAL,
SUBLANG_DEFAULT),(LPTSTR) &lpMsg,
0, NULL);
::MessageBox(NULL, (LPCTSTR)lpMsg, "COM Error",
MB_OK | MB_SETFOREGROUND);
::LocalFree( lpMsg );
}
catch(COleDispatchException *e)
{
char msg[512];
sprintf(msg, "程序运行出错'%d',系统提示信息为:\n\n%s",
e->m_scError & 0x0000FFFF, e->m_strDescription);
::MessageBox(NULL, msg, "无法保存文件",
MB_OK | MB_SETFOREGROUND);
}
//退出
COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);
WordApp.Quit(COleVariant((short)true), vOpt, vOpt);
}
}
}
myazhe
2003-08-21
打赏
举报
回复
楼上,能不能提供一下源程序
karlson0211
2003-08-21
打赏
举报
回复
建议用摸板,如果通过程序来插,要看导入的文件的接口
gzshd
2003-08-21
打赏
举报
回复
使用word模板会容易一些,不知楼主是想做什么样的,如果是固定格式的,先在word里做好一个模板,用的时候只要用程序往里放数据会比较简单
-燕赤侠-
2003-08-21
打赏
举报
回复
有相关的对象模型,你可以查一下office自带的帮助
易语言
程序
免安装版下载
修改高级
表格
支持库,解决
插入
行/
插入
列在未指定行号/列号的情况下
插入
位置
不正确的BUG。 7. 修改
文
本语音转换支持库,增加“机读
文
本.重新创建并初始化()”方法。 8. 修改应用接口支持库,增强“取快捷方式目标...
VC
操作
Word
书签模板
2 将鼠标定位到要
插入
书签的
位置
,从菜单上,“
插入
”->“书签,弹出对话框,输入书签名,点击“添加”按钮。
插入
以下书签:order_num,报告日期_,报表模板__,name,age,结论__ 其
中
,报表模板__,
用
VC
#.NET开发交互式CAD系统
用
VC
#.NET开发交互式CAD系统,包括结合GDI+和OPENGL两种方案。 联系平台客服可开发票。
C++
中
Txt
文
件读取和
写入
(方法汇总)
一、ASCII 输出 为了使用下面的方法, 你必须包含头
文
件 (译者注:在标准C++
中
,已经使用取代,所有的C++标准头
文
件都是无后缀的。)这是 的一个扩展集, 提供有缓冲的
文
件输入输出操作. 事实上, <iostream.h> 已经被...
C++
中
Txt
文
件读取和
写入
C++
中
Txt
文
件读取和
写入
一、ASCII 输出 为了使用下面的方法, 你必须包含头
文
件(译者注:在标准C++
中
,已经使用取代,所有的C++标准头
文
件都是无后缀的。)。这是 的一个扩展集, 提供有缓冲的
文
件输入输出操作. ...
ATL
3,245
社区成员
48,537
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章