zoukankan      html  css  js  c++  java
  • C# 将Excel导出PDF

    1、安装所需包,使用nuget安装所需包

      1.1、Spire.Xls

      1.2、iTextSharp.text.pdf

    2、Spire.Xls介绍

      将Excel转换为PDF是一个很常用的功能,常见的转换场景有以下三种:

     2.1、转换整个Excel文档到PDF
     2.2、转换Excel文档的某一个工作表到PDF
     2.3、转换Excel文档的某一个工作表的某一部分单元格到PDF

     ps:Spire是收费,所以导出excel有如下字样。

     

    解决方法:使用空白图片对字样覆盖操作即可。

     

    //方法一
    Workbook workbook = new Workbook();
    workbook.LoadFromFile("示例.xlsx");
    workbook.SaveToFile("输出.pdf", FileFormat.PDF);
    
    //方法二、对excel某一个sheet生成pdf
    Workbook workbook = new Workbook();
    workbook.LoadFromFile("示例.xlsx");
    Worksheet sheet = workbook.Worksheets[0];
    sheet.SaveToPdf("输出1.pdf");

    3、使用空白图片对字样pdf进行覆盖操作

     private void Excel2PDF(string resourcePdfPath)
            {
              
                
                Workbook workbook = new Workbook();
                //加载excel文件
                workbook.LoadFromFile("excel路径");
                Worksheet sheet = workbook.Worksheets[0];
                //使用spire生成pdf
                sheet.SaveToPdf(resourcePdfPath);
                stream.Close();
            }
            //利用空白图片去掉上图红字字样
            private void AddImgToPDF(string resourcePdfPath,string savePdfPath ,string blackImgPath)
            {
               //加载有字样的pdf模板
                PdfReader reader = new PdfReader(resourcePdfPath);
                PdfStamper pdfStamper = new PdfStamper(reader, new FileStream(savePdfPath, FileMode.Create));
                int iPageNum = reader.NumberOfPages; //pdf页面数
                AcroFields pdfFormFields = pdfStamper.AcroFields;
                string imagePath = blackImgPath;
                //加载空白图片
                iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(imagePath); 
                //设置空白图片位置
                img.SetAbsolutePosition(0, 800);
                //对pdf每页进行空白填充
                for (int j = 1; j <= iPageNum; j++)
                {
                    PdfContentByte over = pdfStamper.GetOverContent(j);
                    over.AddImage(img);
                }
                pdfStamper.Close();
                reader.Close();
            }
    
            private string ExportPDF(string pdfName)
            {
                string tempDirPath = Server.MapPath("/Templates/Excel/");
                string tempPdfPath = tempDirPath + DateTime.Now.ToFileTime() + ".pdf";
                Excel2PDF(tempPdfPath);
                string blackImgPath = tempDirPath + "black.png";
                string savePdfPath = tempDirPath + pdfName + ".pdf";
                AddImgToPDF(tempPdfPath, savePdfPath, blackImgPath);
                FileInfo file = new FileInfo(tempPdfPath);
                file.Delete();
                return savePdfPath;
            }
  • 相关阅读:
    paip.51cto HTML转码规则
    常用记账软件总结
    paip.为什么软件体积越来越大
    paip.版本控制CVSSVNTFS总结
    paip.提升用户体验导入导出
    paip.手机ROOT过程总结
    PAIP.http post 400错误
    paip.javaaspphp.net互相调用方法大总结
    PAip.英文引擎在项目开发上的作用
    paip.SVN无法提交提示冲突的解决
  • 原文地址:https://www.cnblogs.com/zoro-zero/p/10828263.html
Copyright © 2011-2022 走看看