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.

    改变自己,成长自己
  • 相关阅读:
    聊聊click延迟和点击穿透
    setAttribute的浏览器兼容性(转)
    浅谈JS中的高级函数
    跨域总结
    本地存储小结
    ubuntu下pip的安装和使用
    并发编程艺术-锁类型以及底层原理
    HTTP协议以及HTTP2.0/1.1/1.0区别
    Paxos
    jvm垃圾收集器总结jdk1.7
  • 原文地址:https://www.cnblogs.com/xxh-2014/p/11208907.html
Copyright © 2011-2022 走看看