C# 将Excel导出PDF

mac2022-06-30  23

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; }

 

转载于:https://www.cnblogs.com/zoro-zero/p/10828263.html

相关资源:C#导出Excel 导出PDF
最新回复(0)