• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 100分寒风中裸求求VC++操作WORD的问题,向WORD文档中添加表,并对表操作(包括增加行)

100分寒风中裸求求VC++操作WORD的问题,向WORD文档中添加表,并对表操作(包括增加行)

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 100分寒风中裸求求VC++操作WORD的问题,向WORD文档中添加表,并对表操作(包括增加行)等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 100分寒风中裸求求VC++操作WORD的问题,向WORD文档中添加表,并对表操作(包括增加行)
描述:

我根据MSDN上的方法可以创建一个DOC文档并用Selection的TypeText添加文字,我现在要网DOC文档中添加一张3行2列的表并向表填内容该怎么做呢?然后我还想在表的末尾增加新行以添写更多的数据,请问又怎么操作呢?MSDN上好象说用Range,但我太菜,不知道VC++中怎么用,请各位给个code sample并注解下,谢了。


解决方案1:

在word中先操作一遍需要的动作,录制一个宏出来,然后看着vba源码修改,这样快些

解决方案2:

看看下面这段代码,记信先引入Word类型库的,步骤VC->ClassWizard->autumation->AddClass->FormLibrary然后就是具体在的Word的Word*.olb查找一下,在From library中选中,产生一堆类。点中第一个,然后按Shift点中最后一个,所有类都产生了(一堆啊!!),在使用的地方包含Word*.h文件,具体的文件名,看Word的版本,我也是学来的啊,不过我已经用好了!!下面代码是我在自己写的程序上经过删改过的,看一下有什么不明白的可以发短信息,如果我有空的话就给回!!!
char szFilter[] = "Microsoft Word Document(.doc)|*.doc||";
CString defaultName = "结果数据";
CString extStr = "*.doc";
    CFileDialog wordSaveDlg(FALSE, extStr, defaultName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
    if(wordSaveDlg.DoModal()==IDOK)
    {
        CString sFile = wordSaveDlg.GetPathName();
COleVariant vTrue((short)TRUE),
vFalse((short)FALSE),
vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
//Start a new instance of Microsoft Word
_Application oWordApp;
if (!oWordApp.CreateDispatch("Word.Application", NULL))
{
AfxMessageBox("CreateDispatch failed.", 
MB_OK | MB_SETFOREGROUND);
return;
}
try
{
//Create a new document
Documents oDocs;
_Document oDoc;
oDocs = oWordApp.GetDocuments();
oDoc = oDocs.Add(vOpt, vOpt,vOpt,vOpt);
PageSetup mPageSetup;
mPageSetup = oDoc.GetPageSetup();
mPageSetup.SetOrientation(1);
//Add text to the document
Selection oSel;
oSel = oWordApp.GetSelection();
// oSel.TypeText("one");
// oSel.TypeParagraph();
///-----------------------------------------------------------------------------------------
//输出文本.begin.
Paragraphs paragraphs1;           //代表文档中所有段
Paragraph paragraph1;        //代表文档中某一段
paragraphs1=oDoc.GetParagraphs();
// paragraph1=paragraphs1.GetFirst();  //得到第一段,也可以用GetItem(n)来得到第n段
paragraph1=paragraphs1.GetFirst();
Range r1=paragraph1.GetRange(); //选中第一段
//下边是你所说的,用_Font类,先得到现在的字体信息,在此基础上改变就行了
_Font of /> // ofont.SetName("华文行楷");
ofont.SetSize((short)20);
paragraph1.SetAlignment(1); //使一段(Paragraph)居中显示
r1.SetText("结果数据表\n");
//输出文本.end.
///-----------------------------------------------------------------------------------------
//Save the document
// _Document oActiveDoc; 
// oActiveDoc = oWordApp.GetActiveDocument();//使用文档保存文件一法
oWordApp.SetVisible(FALSE);
//加入表格begin.
Tables tbs;
Table tb;
Cell cell;
Range range;
//让range选中要插入表格的地方
COleVariant vm1((short)TRUE),vm2((short)TRUE);
oDoc.Activate();
tbs=oDoc.GetTables();
//
VARIANT vt;
vt.vt=VT_ERROR;
vt.scode=DISP_E_PARAMNOTFOUND;
tagVARIANT tvt1;
tvt1 = vtMissing;
paragraph1 = paragraphs1.GetLast();
range = paragraph1.GetRange();
_Font ofont2 = range.GetFont();
ofont2.SetSize((short)10);
//使用Grid控件导出更为合理一些,还是使用结果数据呢?
//标题信息数据放到对话框架类里存储了,调整信息可以放到配置(.INI)文件中进行管理 tb = tbs.Add(range, 8, 8,&tvt1,&tvt1);//, &vt, &vt);//第二、第三个参数:8,8,表示建立8×8表格//在Word2000下为四个参数,在其他的根据情况了。
Cell  oCell;
oCell = tb.Cell(0, 0);//选择第一行,第一列所在的单元格
range = oCell.GetRange();
CString str;
for(int i = 0;i<8;i++)
         {
                                for(int j = 0; j< 8;j++)
                                 {
                                     str.Format("%d,%d",i,j);
          cell=tb.Cell(i,j);
range=cell.GetRange();
range.SetText(str);
}
//加入表格end.
oDoc.SaveAs(COleVariant(sFile), 
COleVariant((short)0),
vFalse, COleVariant(""), vTrue, COleVariant(""),
vFalse, vFalse, vFalse, vFalse, vFalse);
}
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, "Run-time error '%d':\n\n%s", 
e->m_scError & 0x0000FFFF, e->m_strDescription);
::MessageBox(NULL, msg, "Server Error", 
MB_OK | MB_SETFOREGROUND);      
}
//Quit the application
oWordApp.Quit(vFalse, vOpt, vOpt);
MessageBox("导出Word文件完成!","系统提示",MB_OK | MB_ICONINFORMATION);
}

解决方案3:

CComQIPtr<MSWord::_Document>     m_Doc;
    
m_Doc=App->GetActiveDocument();
CComQIPtr<MSWord::Shapes>     oShapes;
oShapes = m_Doc->GetShapes();
CComQIPtr<MSWord::Shape>     oShape;
oShape=oShapes->AddOLEControl():
AddOLEControl()里的具体参数按照你的要求

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 100分寒风中裸求求VC++操作WORD的问题,向WORD文档中添加表,并对表操作(包括增加行)

相关文章

  • 2017-06-04 救命啊!怎么建立数组参数?
  • 2017-06-04 请高手指教如何使msflexgrid表格的一个单元能显示多行文本?
  • 2017-06-04 ATLactivex从网页传递带整数参数的函数
  • 2017-06-05 把几个函数做成一个dll的问题
  • 2017-06-04 ACTIVEX控件的版本号怎么修改啊??
  • 2017-06-05 ActiveX关闭网页时有excpetion大侠请帮忙
  • 2017-06-05 多线程定时器问题,请大家指点!
  • 2017-06-05 VCOLEEXCEL怎么复制指定区域和黏贴啊。。
  • 2017-06-05 如何能保证一个线程、进程被关闭?
  • 2017-06-04 郁闷:HRESULT0x8001010e应用程序调用一个已为另一线程整理的界面

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Dll内创建CreateTread的问题。
    • 如何实现从页面上自动下载安装activex控件??
    • 一个列表控件如何转变为带有滚动的窗口视图?
    • 请问怎样中止‘拒绝访问’的进程?
    • VC制作的数据库服务器执行时的阻塞方案
    • 请教一个VC自带库函数的问题在线急候
    • 哪位有能力的朋友能帮我解决一下,先谢谢了
    • 每次编译有COM的项目都有很多IDL输出,影响我的速度,能不能去掉那些多余的?
    • 弱弱的问一下,如何模拟向窗口发送一个windows消息
    • CMarkup类怎么没有load方法?网上介绍里面怎么有这个方法?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有