这个函数可是费我老大劲了。
我可以保证,你无法在除了我发的——互联网任何一个地方找到这段代码。
使用的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根本就是一坨屎。