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,还需要更合适的组件。最后,创作不易,感谢支持。望一键三连。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐