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[];
sheet.SaveToPdf("输出1.pdf");

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

 private void Excel2PDF(string resourcePdfPath)
{ Workbook workbook = new Workbook();
//加载excel文件
workbook.LoadFromFile("excel路径");
Worksheet sheet = workbook.Worksheets[];
//使用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(, );
//对pdf每页进行空白填充
for (int j = ; 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;
}

C# 将Excel导出PDF的更多相关文章

  1. 导出excel和PDF小结 vba

    最近接触了一个关于Access工具的项目,所以整理下需要使用的方法. 功能要求简介: 1.将数据表中的数据导出到excel和PDF 2.并根据某个字段名称分sheet输出. 3.无模板方式 方案简介: ...

  2. java操作office和pdf文件页面列表导出cvs,excel、pdf报表.

    在平常的开发中我们常常遇到不仅仅只是导出excel报表的情况.有时候也需要导出pdf或者CSV报 表.其实原理都差不多.刚开始本来不打算也这篇博客介绍这个的.感觉这篇博客和前面的博客有点雷同.原理基本 ...

  3. Ireport 报表导出 Poi + ireport 导出pdf, word ,excel ,htm

    Ireport 报表导出 Poi + ireport 导出pdf, doc ,excel ,html 格式 下面是报表导出工具类reportExportUtils 需要导出以上格式的报表 只需要调用本 ...

  4. Ionic2+WebApi 导出Excel转Pdf文件。

    步骤: 1.首先在WebApi中先把excel生成好. 2.把excel转成Pdf,并返回下载的链接. 3.Ionic2的页面做好下载的接口. 嗯~思路很清晰,那么下面就来详细的操作吧. 以下是H5的 ...

  5. jquery插件导出excel和pdf(解决中文乱码问题)

    参考文件:http://jackyrong.iteye.com/blog/2169683 https://my.oschina.net/aruan/blog/418980 https://segmen ...

  6. 个人永久性免费-Excel催化剂功能第50波-批量打印、导出PDF、双面打印功能

    在倡导无纸化办公的今天,是否打印是一个碍眼的功能呢,某些时候的确是,但对于数据的留存,在现在鼓吹区块链技术的今天,仍然不失它的核心价值,数据报表.单据打印出来留存,仍然是一种不可或缺的数据存档和防篡改 ...

  7. Vue框架下实现导入导出Excel、导出PDF

    项目需求:开发一套基于Vue框架的工程档案管理系统,用于工程项目资料的填写.编辑和归档,经调研需支持如下功能: Excel报表的导入.导出 PDF文件的导出 打印表格 经过技术选型,项目组一致决定通过 ...

  8. 二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...

  9. (Excel导出失败)检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失

    在DCOM 中不存在WORD.EXCEL等OFFICE组件   最近在做一个关于office转存PDF的Web项目.开发过程一切顺利. 起初在网上找到一些Word,PPT转PDF的代码.很好用.一切顺 ...

随机推荐

  1. 杀死Linux中的defunct进程(僵尸进程)的方法指南

    杀死Linux中的defunct进程(僵尸进程)的方法指南_LINUX_操作系统_脚本之家https://www.jb51.net/LINUXjishu/457748.html 这样能看到僵尸进程.

  2. hive时间戳转换&UDF更新

    from_unixtime 时间戳转换,如果带毫秒数的,除以1000. # ) ,'yyyy/MM/dd HH:mm:ss') as dt; reload function 今天碰到udf发布后,有时 ...

  3. centos7 docker swarm加入集群失败

    提示的错误为 [root@localhost downloads]# docker swarm join --token SWMTKN-1-2ezr0k5ybds1la4vgi2z7j8ykxkmm0 ...

  4. Python3基础 dict __len__ 统计键值对的数量

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  5. 数据库事务和spring事务的区别

    数据库事务和spring事务 本质上其实是同一个概念,spring的事务是对数据库的事务的封装,最后本质的实现还是在数据库,假如数据库不支持事务的话,spring的事务是没有作用的.数据库的事务说简单 ...

  6. node.js使用markdown-it批量转md内容为html

    代码如下: var fs = require('fs'); var MarkdownIt = require('markdown-it'), md = new MarkdownIt(); /* pag ...

  7. [LeetCode] 65. Valid Number 验证数字

    Validate if a given string can be interpreted as a decimal number. Some examples:"0" => ...

  8. [LeetCode] 106. Construct Binary Tree from Inorder and Postorder Traversal 由中序和后序遍历建立二叉树

    Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume that ...

  9. django:资源网站汇总

    Django REST framework官网 http://www.sinodocs.cn/ django中文网 https://www.django.cn/

  10. java面试 (七)- 关于String

    1 String的定义(Java8中) // final的类,不能被继承// 继承了序列化接口,comparable接口,public final class String implements ja ...