【非付费】C#关于将Excel转为PDF的两种方法

前言:其实有很多的组套软件提供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

猜你喜欢

转载自blog.csdn.net/jamenu/article/details/128520616