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.

    改变自己,成长自己
  • 相关阅读:
    数据结构-顺序表
    数据结构-概论
    社交网络图中结点的“重要性”计算 (30 分) C++解法
    面向对象程序设计--Java语言第二周编程题:有秒计时的数字时钟
    面向对象程序设计--Java语言第三周编程题:查找里程
    面向对象程序设计--Java语言第一周编程题:分数
    剑指Offer_#42_连续子数组的最大和
    vue--模态框背景不动解决方案
    redis(十七):Redis 安装,部署(WINDOWS环境下)
    redis(二十一):Redis 架构模式实现(哨兵)
  • 原文地址:https://www.cnblogs.com/xxh-2014/p/11208907.html
Copyright © 2011-2022 走看看