zoukankan      html  css  js  c++  java
  • 利用Microsoft.Office.Interop.Excel 将web页面转成PDF

    网上有很多将Web页面转成PDF的方法,还有许多收费的第三方插件。其实利用Office 自带的将EXCEL发布成PDF的功能就可以实现,如果你的需求没有多复杂,可以采用笔者的方法。

    首先将web页面html保存为EXCEL文件(此步骤有多种方法,就不详细探讨了。只要能将web页面转成EXCEL文件,剩下的就好说了。)

    StringWriter html = new StringWriter();
    HtmlTextWriter tw = new HtmlTextWriter(html);
    base.Render(tw);
    
    //excelName存放Excel的地址
    FileStream fs = new FileStream(excelName, FileMode.Create);
    StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("utf-8"));
                //开始写入
                sw.Write(html);
                //清空缓冲区
                sw.Flush();
                //关闭流
                sw.Close();
                fs.Close();

     然后利用Microsoft.Office.Interop.Excel将EXCEL 转成PDF

    首先引用 Microsoft.Office.Interop.Excel.dll,并设置 dll 的属性值无法嵌入互操作类型 为false 。否则会报 类型“Microsoft.Office.Interop.Excel.ApplicationClass”未定义构造函数    无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口 错误。
    然后安装 SaveAsPDFandXPS.exe (安装此插件才能将excel 另存为 pdf)
    源代码如下:
    /// <summary>
            /// Excel保存PDF
            /// </summary>
            /// <param name="excelPath"> EXCEL全路径 </param>
            /// <param name="pdfPath"> PDF保存路径 </param>
            /// <returns></returns>
            public static bool CovertExcelToPDF( string excelPath, string pdfPath)
            {
                object missing = Type .Missing;
                ////创建excel应用程序实例
                ApplicationClass application = null ;
                ////创建工作薄实例
                Workbook workBook = null ;
                try
                {
                    application = new ApplicationClass ();
                    ////打开工作簿
                    workBook = application.Workbooks.Open(excelPath, missing, missing, missing, missing, missing,
                                                          missing, missing, missing, missing, missing, missing, missing, missing, missing);
                    ////打开sheet
                    Worksheet ws = (Worksheet )workBook.Worksheets.Item[1];
                    ////设置打印放放为水平
                    ws.PageSetup.Orientation = XlPageOrientation .xlPortrait;
                    ////设置打印时excel内容在一个页面上显示。Zoom必须设置为false
                    ws.PageSetup.Zoom = false ;
                    ws.PageSetup.FitToPagesTall = 1;
                    ws.PageSetup.FitToPagesWide = 1;
    
                    ////将工作簿发布为PDF或XPS格式
                    ws.ExportAsFixedFormat( XlFixedFormatType .xlTypePDF, pdfPath
                        , XlFixedFormatQuality .xlQualityStandard
                        , true
                        , false     ////忽略打印区域
                        , missing, missing, missing, missing);
                    return true ;
                }
                catch
                {
                    throw ;
                }
                finally
                {
                    ////工作簿关闭
                    if (workBook != null )
                    {
                        workBook.Close( true , missing, missing);
                        workBook = null ;
                    }
                    //// excel应用程序退出关闭
                    if (application != null )
                    {
                        application.Quit();
                        application = null ;
                    }
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                }
            }


    【代码示例】

  • 相关阅读:
    博客推荐
    2018
    2018
    学习推荐-Postgresql学习手册
    学习推荐-Redis学习手册
    odoo开发笔记 -- odoo源码解析
    前沿技术相关
    odoo开发笔记-tree列表视图拖拽排序
    odoo开发笔记-日期时间相关操作
    odoo开发笔记 -- 官方模块一览表
  • 原文地址:https://www.cnblogs.com/ttrjba/p/3873538.html
Copyright © 2011-2022 走看看