• 用C#实现Word,PPT,EXECL 图片输出


    因为要做一个在线阅读模块,所以研究了一天,终于找到了一个比较好的方案:

    1.准备两个工具,office 运行库(interop),虚拟打印机Tagged Images Printer (就是MSOFFICE中Document Imaging的组件)

    2.原理就是用虚拟打印机打印到文件,再把tiff格式转成普通图像格式

    这里是实现:

    添加对应的引用

    view plaincopy to clipboardprint?
    using Word = Microsoft.Office.Interop.Word; 
    using PPT = Microsoft.Office.Interop.PowerPoint; 
    using EXECL = Microsoft.Office.Interop.Excel; 
     

    以下是doc转图像的method

    view plaincopy to clipboardprint?
    string imagepath = null; 
    /// <summary> 
    /// doc 转 图像 
    /// </summary> 
    /// <param name="filepath">要转换的文档的路径(要加文件名)e.g. : C:\users\jackyyf\desktop\abc.doc</param> 
    /// <param name="temppath">临时文件的路径(不要加文件名)e.g. : C:\users\jackyyf\desktop\</param> 
    /// <param name="outputpath">输出的文档的路径(要加文件名)e.g. : C:\users\jackyyf\desktop\abc.jpg</param> 
    public void DOCtoIMAGE(string filepath,string temppath,string outputpath, System.Drawing.Imaging.ImageFormat imageformat) 

        object FileName = (object)filepath; 
        object ReadOnly = (object)true; 
        object PrintToFile = (object)true; 
        object OutPutFiletemp = (object)temppath+DateTime.Now.Ticks.ToString()+".tiff"; 
        Word.ApplicationClass appclass = new Word.ApplicationClass(); 
        appclass.Documents.Open(ref FileName, ReadOnly: ref ReadOnly); 
        appclass.ActivePrinter = "Tagged Images Printer"; 
        appclass.PrintOut(FileName: ref FileName,  
                          PrintToFile: ref PrintToFile,  
                          OutputFileName: ref OutPutFiletemp); 
        appclass.Documents.Close(); 
        appclass.Quit(); 
        System.Drawing.Image img = System.Drawing.Image.FromFile(OutPutFiletemp.ToString()); 
        img.Save(outputpath, imageformat); 
        img.Dispose(); 
        File.Delete(OutPutFiletemp.ToString()); 

     

    这是ppt转图像的代码,还没做method. 

    因为ppt可以直接保存 为图像,就简单一点了,呵呵

    view plaincopy to clipboardprint?
    PPT.ApplicationClass PPTappclass = new PPT.ApplicationClass(); 
    PPT.Presentation PPTpre = PPTappclass.Presentations.Open(@"C:\Users\jackyyf\Desktop\haha.ppt", Office.MsoTriState.msoFalse, Office.MsoTriState.msoFalse, Office.MsoTriState.msoFalse); 
    PPTpre.SaveAs(@"C:\Users\jackyyf\Desktop\haha.jpg", PPT.PpSaveAsFileType.ppSaveAsJPG); 
     

    这是execl转图像的代码,没做method, 文件路径自己去改了..

    view plaincopy to clipboardprint?
    object ActivePrinter = (object)"Tagged Images Printer"; 
    object PrintToFile = (object)true; 
    object PrToFileName = (object)@"C:\users\jackyyf\desktop\" + DateTime.Now.Ticks.ToString(); 
    EXECL.ApplicationClass EXECLappclass = new EXECL.ApplicationClass(); 
    EXECL.Workbook EXECLwb = EXECLappclass.Workbooks.Open(@"C:\users\jackyyf\desktop\haha007.xls"); 
    EXECLwb.PrintOutEx(ActivePrinter: ActivePrinter, PrintToFile: PrintToFile, PrToFileName: PrToFileName); 
    EXECLwb.Close(); 
    EXECLappclass.Quit(); 
    System.Drawing.Image img = System.Drawing.Image.FromFile(PrToFileName.ToString()); 
    img.Save(@"c:\users\jackyyf\desktop\haha.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); 
    img.Dispose(); 
    File.Delete(PrToFileName.ToString()); 
     

  • 相关阅读:
    Python接口测试
    Python数据类型间互转(字典、字符串、列表、元组)
    Jenkins自动构建部署(Maven+SVN+Tomcat7))
    Hadoop搭建HA环境(Hadoop+HBase+Zookeeper)注意事项
    CentOS中安装使用ssh
    CentOS中设置网络
    CentOS中永久修改主机名
    jsp页面动态的显示当前系统的时间
    css样式解决不同IE版本之间的兼容问题
    java.lang.NoClassDefFoundError: org/apache/jsp/licence_jsp (wrong name: org/apache/jsp/Licence_jsp)
  • 原文地址:https://www.cnblogs.com/zzxap/p/2175746.html
Copyright © 2020-2023  润新知