zoukankan      html  css  js  c++  java
  • 生成的excel转成Pdf(接上篇)

    Npoi生成的Excel

      /// <summary>
            /// excel To PDf
            /// </summary>
            /// <param name="excelPath">l源文件路径</param>
            /// <param name="pdfPath">目的文件路径</param>
            /// <returns></returns>
            public static bool ConverterToPdf(string excelPath, string pdfPath)
            {
                Application excelApp = null;
                Workbooks excelWorkBooks = null;
                Workbook excelWorkBook = null;
                string lstrTemp = string.Empty;
                object lobjMissing = System.Reflection.Missing.Value;
                try
                {
                    excelApp = new Application();
                    //hide all excel(appliction)
                    excelApp.Visible = true;
                    excelWorkBooks = excelApp.Workbooks;
                    //打开excel,得到WorkBook对象
                    excelWorkBook = excelWorkBooks.Open(excelPath, true, true, lobjMissing, lobjMissing, lobjMissing, true,
                        lobjMissing, lobjMissing, lobjMissing, lobjMissing, lobjMissing, false, lobjMissing, lobjMissing);
    
                    lstrTemp = Path.GetTempPath() + Guid.NewGuid().ToString() + ".xls" +
                               (excelWorkBook.HasVBProject ? 'm' : 'x');
                    //lstrTemp = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".xls";
    
                    excelWorkBook.SaveAs(lstrTemp, XlFileFormat.xlExcel4Workbook, Type.Missing, Type.Missing, Type.Missing,
                        false, XlSaveAsAccessMode.xlNoChange, Type.Missing, false, Type.Missing, Type.Missing,
                        Type.Missing);
    
                    //输出为PDF
                    excelWorkBook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfPath,
                        XlFixedFormatQuality.xlQualityStandard, Type.Missing, false, Type.Missing, Type.Missing, false,
                        Type.Missing);
    
                    //关闭workbooks
                    excelWorkBooks.Close();
                    //退出excel
                    excelApp.Quit();
                }
                catch (Exception ex)
                {
                    //其他日志操作;
                    return false;
                }
                finally
                {
                    if (excelWorkBook != null)
                    {
                        Marshal.ReleaseComObject(excelWorkBook);
                        excelWorkBook = null;
                    }
    
                    if (excelWorkBooks != null)
                    {
                        excelWorkBooks.Close();
                        Marshal.ReleaseComObject(excelWorkBooks);
                        excelWorkBooks = null;
                    }
    
                    if (excelApp != null)
                    {
                        excelApp.Quit();
                        Marshal.ReleaseComObject(excelApp);
                        excelApp = null;
                    }
                    //删掉转换之前的excel
                    if (File.Exists(excelPath))
                    {
                        File.Delete(excelPath);
                    }
    
                    //主动激活垃圾回收器,主要是避免超大批量转文档时,内存占用过多,而垃圾回收器并不是时刻都在运行!
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                }
    
                return true;
            }
    

      反正就不明绝厉,要注意COM组件的注册。

    摘别人的:

    https://blog.csdn.net/cyj0531/article/details/53423753

    对了,需要安装包。 Microsoft office interop.Excel packages.

    改变自己,成长自己
  • 相关阅读:
    Android ListView嵌套Button,Button事件覆盖item事件解决办法
    android 再按一次退出程序(实现代码)
    Android 带checkbox的listView 实现多选,全选,反选
    Android调用第三方应用
    Android输入法界面管理(打开/关闭/状态获取)
    ViewPager的使用方法和实现过程
    安装pycharm 2018.3 Professional Edition
    layui和jquery冲突:Syntax error, unrecognized expression: +
    解决因为本地代码和远程代码冲突,导致git pull无法拉取远程代码的问题(转载)
    Object.assign()
  • 原文地址:https://www.cnblogs.com/xxh-2014/p/11208907.html
Copyright © 2011-2022 走看看