前言:其实有很多的组套软件提供Excel转PDF,而且也包含更多更强大的关于文件格式转化和操作的API,像是ITextshape,
sautinsoft,evopdf,componentpro。但全都是商业付费的。上午只找到两种可以使用的方法,暂时先记录一下。
一.Microsoft.Office.Interop.Excel
这是微软提供的一个dll,用来操作Excel,里面有方法将Excel直接转化为PDF文件
//参数全为Object,非常难以理解
void ExportAsFixedFormat(XlFixedFormatType Type, object Filename, object Quality, object IncludeDocProperties, object IgnorePrintAreas, object From, object To, object OpenAfterPublish, object FixedFormatExtClassPtr);
使用例:
static void Main(string[] args)
{
string sourcexlsx = $@"C:\XXXXX\TKONE.xlsx";
string targetpdf = $@"C:\XXXXXX\target.pdf";
Microsoft.Office.Interop.Excel.Application appExcel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook workbook = appExcel.Workbooks.Open(sourcexlsx);
//也可以选择转化为XPS模式
workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, targetpdf);
workbook.Close();
appExcel.Quit();
}
因为图中的表格非常的长,所以转化为pdf后被截断为三页,且上述的其他参数对被截断的情况也没有任何效果,
如果想要了解其他参数的情况则看以下的链接:
转化方法的微软文档
二.Free Spire.XLS
Spire也是付费的一套各种文档操作的API,但好在它有一个功能收到很大限制[Free version is limited to 5 sheets per workbook and 200 rows per sheet.]的免费版本(也可以商用),如果内容不多基本影响不是很大,
公告传送门
使用例:
Spire.Xls.Workbook book = new Spire.Xls.Workbook();
book.LoadFromFile($@"C:\XXXXXX\TKONE.xlsx");
book.ConverterSetting.SheetFitToPage = true; //可以设置适应页面
book.SaveToFile($@"C:\XXXXXXXXXX\dark.pdf", Spire.Xls.FileFormat.PDF);
book.Save();
得到的转化结果为:
宽度是自适应的,而且方法的使用更简单,如果只是转化单个较简单的文件还是很便捷的。如果还无法满足需求的话,或许需要选择付费API