C# 实现Excel转PDF(附完整源代码)
其实这是一个很简单的项目实现,主要复杂的就是过程,一直寻找符合需求的组件,写完后测试。还有很多可以使用的组件。因为我们需要只是单Excel表,如果存在很多Sheet,还需要更合适的组件。望一键三连。
1.前言
这两天安排了一个任务,C#实现Excel转换为PDF。刚开始的时候找了很多组件,发现了很多问题,全部是不符合要求的,要么是生成PDF后会有水印,要么是需要本地下载Excel才可以。下面是一些组件存在的问题:
(1)Spire.XLS:付费组件,生成PDF会带有水印;
(2)Aspose.Cell:付费组件,生成PDF会带有水印;
(3)Microsoft.Office.Interop.Excel:需要本地下载Excel,否则会报错;
(4)PDFSharp等:很多需要自己设计PDF的格式等,不能自动按照excel的格式来生成。
最后找了很多资料,终于让我找到解决上面问题的组件;
2.准备工作
首先是简要设计了一个WinForm窗体来实现这个功能:
控件的设计很简单,这里就不多说。
用来提示Excel路径和Pdf路径,点击按钮后可以自己选择Excel文件,后缀是*.xls和*.xlsx
找到解决方案资源管理器中的依赖项,右键选择“管理NuGet程序包”
找到FreeSpire.XLS,安装
这个组件可以完成Excel转PDF,同时不会出现水印,默认按照Excel的参数来生成PDF。
3.源代码
直接贴代码:
using System;
using System.IO;
using System.Windows.Forms;
using System.Text;
using Spire.Xls;
using System.Reflection.Metadata;
namespace ExcelToPdf
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnOpenExcel_Click(object sender, EventArgs e)
{
//创建打开文件对话框
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Excel文件|*.xls;*.xlsx";
try
{
//如果用户选择了文件,打开Excel并转换为PDF
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string sourcePath = openFileDialog.FileName;
txtExcelPath.Text = sourcePath;
string pdfPath = Path.ChangeExtension(sourcePath, ".pdf");
txtPdfPath.Text = pdfPath;
Workbook workbook = new Workbook();
workbook.LoadFromFile(sourcePath);
workbook.SaveToFile(pdfPath, FileFormat.PDF);
MessageBox.Show("Excel文件已成功转换为PDF并保存到:" + pdfPath);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
4.最后
其实这是一个很简单的项目实现,主要复杂的就是过程,一直寻找符合需求的组件,写完后测试。还有很多可以使用的组件。因为我们需要只是单Excel表,如果存在很多Sheet,还需要更合适的组件。最后,创作不易,感谢支持。望一键三连。
更多推荐
所有评论(0)