Excel转换pdf

这个函数可是费我老大劲了。

我可以保证,你无法在除了我发的——互联网任何一个地方找到这段代码。

使用的dll需要在安装了ms office的电脑上才能找到。

例子

 1//测试:转换为pdf
 2//在下面两个文件夹中找到 office 和 Microsoft.Office.Interop.Excel 两个dll
 3//C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\15.0.0.0__71e9bce111e9429c
 4//C:\Windows\assembly\GAC_MSIL\office\15.0.0.0__71e9bce111e9429c
 5private void button2_Click(object sender, EventArgs e)
 6{
 7    string filePath  = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\Sample\wb.xlsx";
 8    string filePath2 = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\Sample\wb.pdf";
 9    //List<string> files = new List<string>();
10    //files.Add(filePath);
11    Application application = new ApplicationClass();
12    Workbook workbook = application.Workbooks.Open(filePath);
13    workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, filePath2, XlFixedFormatQuality.xlQualityStandard);
14}

封装函数

 1public static void ConvertExcelToPDF(string sourcePath,string targetPath)
 2{
 3    Application application ;
 4    Workbook workbook ;
 5    try
 6    {
 7        application = new ApplicationClass();
 8        workbook = application.Workbooks.Open(sourcePath);
 9        workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, targetPath, XlFixedFormatQuality.xlQualityStandard);
10    }
11    catch (Exception e)
12    {
13        ConsoleWriter.WriteErrorMessage("pdf输出 出错");
14    }
15}

那个叫做Spire的库可真是害惨我了。

Spire.XLS提供了很简单的例子,但是报错却非常非常的诡异。网上没有任何相关信息。

一看实现,好家伙,一堆goto

而且Spire还有不支持excel默认编码的问题IBM 472

Spire在读取xlsx的时候报编码错误可以用nuget安装这个包来解决:

1system.text.encoding.codepages
1Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);//增加编码支持。

Spire 我用来调整了一下表格列宽什么的,还是挺好用的,但是它内部肯定有问题。另存为PDF根本就是一坨屎。

更多代码可以参考我的github


Docx的搜索实现
Permission Denied (Publickey,gssapi-Keyex,gssapi-With-Mic) 解决办法