如果想把Excel和Word的内容转成bmp檔﹐应该怎么做?

storm999 2005-12-14 02:32:45
我想把Excel和Word档里面的内容转成图像﹐其图象和打开Excel和Word看到的一模一样﹐请问各位有没有好办法
...全文
498 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
storm999 2005-12-16
  • 打赏
  • 举报
回复
先謝了﹐我試一下
constantine 2005-12-15
  • 打赏
  • 举报
回复
学习,我只试过用写字板打开再转为bmp图片 ,word有一些不好控制,他的容器又分也而且那个控件不了解。
excel还没有试过
Maconel 2005-12-15
  • 打赏
  • 举报
回复
刚好我前2天刚研究了这个问题,是通过虚拟打印机来实现的。
比如装了office2003后,他会给你安装一个虚拟打印机,如果你打印一个图片或者文档或者什么东西时,选择这个打印机,那么它会给你打印为一个tif文件,然后你自己爱转成其他什么格式的图片都没问题了。使用其他的虚拟打印机,比如pdf的,或者eprint,或者snagit什么的,也都一样。
所以首先需要这么几个条件:
1、安装虚拟打印机。
2、安装了office。我是打印word文档,excel应该差不多。
然后就是写代码了。我是用vc写的,bcb没有试怎么用,但是利用office栏的控件,应该差不多,我这里给出vc的方法。
1、按 ctrl + w 调出ClassWizard,在Automation页,点
[Add Class] - [From a type library],在office安装目录下的OFFICE11文件夹,选择MSWORD.OLB,确定。
2、选择_Application,Documents,_Document这3个,确定。这时可以看到ClassView里已经多了这3个类。
3、在需要的地方,比如一个按钮的事件里,添加代码:
void CTmp2Dlg::OnButton2()
{
_Application objWordApp; //word对象
COleVariant ovTrue((short)TRUE); //true
COleVariant ovFalse((short)FALSE); //false
COleVariant ovOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

//初始化com
AfxOleInit();

//创建一个IDispatch指针
if (!objWordApp.CreateDispatch("Word.Application"))
{
AfxMessageBox("Couldn't get Word object.");
return;
}
objWordApp.SetVisible(FALSE); //显示应用程序
Documents docs(objWordApp.GetDocuments()); //word文档
_Document docPrint; //word文档

docPrint.AttachDispatch(
docs.Open(
COleVariant("C:\\T.doc",VT_BSTR), //word文档路径
ovFalse, // 确定转换
ovFalse, // 只读打开
ovFalse, // 添加到最近使用文件列表
ovOptional, // PasswordDocument.
ovOptional, // PasswordTemplate.
ovFalse, // Revert.
ovOptional, // WritePasswordDocument.
ovOptional, // WritePasswordTemplate.
ovOptional, // Format. // 如果是Word97,这便是最好一个参数
ovOptional, // 编码 // 下面是Word 2000/2002专用的参数
ovTrue, // 可见
ovOptional, // OpenConflictDocument
ovOptional, // OpenAndRepair
COleVariant((long)0), // DocumentDirection wdDocumentDirection LeftToRight
ovOptional // NoEncodingDialog
)
);
docPrint.PrintOut(
ovFalse, // 背景
ovOptional, // Append.
ovOptional, // Range.
COleVariant("C:\\T.tiff",VT_BSTR), // OutputFileName.
ovOptional, // From.
ovOptional, // To.
ovOptional, // Item.
COleVariant((long)1), // 份数
ovOptional, // Pages.
ovOptional, // PageType.
ovOptional, // PrintToFile.
ovOptional, // Collate.
ovOptional, // ActivePrinterMacGX.
ovOptional, // ManualDuplexPrint.
ovOptional, // PrintZoomColumn New with Word 2002
ovOptional, // PrintZoomRow ditto
ovOptional, // PrintZoomPaperWidth ditto
ovOptional // PrintZoomPaperHeight ditto
);
objWordApp.Quit(
ovFalse, // 保存修改
ovTrue, // 原始格式
ovFalse // RouteDocument.
);
}
AttachDispatch函数的第一个参数,就是要打印的word文档文件名,PrintOut函数的第四个参数,是输出的tif文件名,如果这里不写的话,虚拟打印机会弹出对话框问你文件名。
我对操作office也不是很熟,这个代码在运行过程中会出现打印的对话框,不过很快就自动关闭了,打印完后,虚拟打印机会自动打开打印的tif文件。这些问题我没有仔细研究,楼主有兴趣,自己研究吧。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧