PS:公司的业务中有个超级大的作业就是把OFFICE文档转成PDF,我猜之前没程序猿们,公司那些人应该是一个个手动转。强烈为猿们感叹,帮你们做了这么多事,还在那抱怨....无法满足你们的需求啊;
微软net平台提供了对Office文档非常好的支持;其中有com组件直接集成到了VS中。利用这些API可以快速的免去N多繁琐的工作;
以下代码是翻阅了公司的代码,一个个敲出来的;奉上代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Runtime.InteropServices; using Microsoft.Office.Interop.Excel; //Office 命名空间 namespace OfficeToPdf { //excel 类 class ExcelConverter { //构造函数 public ExcelConverter() { } /// <summary> /// 转换excel 成PDF文档 /// </summary> /// <param name="_lstrInputFile">原文件路径</param> /// <param name="_lstrOutFile">pdf文件输出路径</param> /// <returns>true 成功</returns> public bool ConverterToPdf( string _lstrInputFile, string _lstrOutFile) { Microsoft.Office.Interop.Excel.Application lobjExcelApp = null ; Microsoft.Office.Interop.Excel.Workbooks lobjExcelWorkBooks = null ; Microsoft.Office.Interop.Excel.Workbook lobjExcelWorkBook = null ; string lstrTemp = string .Empty; object lobjMissing = System.Reflection.Missing.Value; try { lobjExcelApp = new Microsoft.Office.Interop.Excel.Application(); lobjExcelApp.Visible = true ; lobjExcelWorkBooks = lobjExcelApp.Workbooks; lobjExcelWorkBook = lobjExcelWorkBooks.Open(_lstrInputFile, true , true , lobjMissing, lobjMissing, lobjMissing, true , lobjMissing, lobjMissing, lobjMissing, lobjMissing, lobjMissing, false , lobjMissing, lobjMissing); //Microsoft.Office.Interop.Excel 12.0.0.0之后才有这函数 lstrTemp = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".xls" + (lobjExcelWorkBook.HasVBProject ? 'm' : 'x' ); //lstrTemp = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".xls"; lobjExcelWorkBook.SaveAs(lstrTemp, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel4Workbook, Type.Missing, Type.Missing, Type.Missing, false , Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, false , Type.Missing, Type.Missing, Type.Missing); //输出为PDF 第一个选项指定转出为PDF,还可以指定为XPS格式 lobjExcelWorkBook.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, _lstrOutFile, Microsoft.Office.Interop.Excel.XlFixedFormatQuality.xlQualityStandard, Type.Missing, false , Type.Missing, Type.Missing, false , Type.Missing); lobjExcelWorkBooks.Close(); lobjExcelApp.Quit(); } catch (Exception ex) { //其他日志操作; return false ; } finally { if (lobjExcelWorkBook != null ) { lobjExcelWorkBook.Close(Type.Missing,Type.Missing,Type.Missing); Marshal.ReleaseComObject(lobjExcelWorkBook); lobjExcelWorkBook = null ; } if (lobjExcelWorkBooks != null ) { lobjExcelWorkBooks.Close(); Marshal.ReleaseComObject(lobjExcelWorkBooks); lobjExcelWorkBooks = null ; } if (lobjExcelApp != null ) { lobjExcelApp.Quit(); Marshal.ReleaseComObject(lobjExcelApp); lobjExcelApp = null ; } //主动激活垃圾回收器,主要是避免超大批量转文档时,内存占用过多,而垃圾回收器并不是时刻都在运行! GC.Collect(); GC.WaitForPendingFinalizers(); } return true ; } } } |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/chenqiangdage/article/details/20408731