PS:公司的業(yè)務(wù)中有個超級大的作業(yè)就是把OFFICE文檔轉(zhuǎn)成PDF,我猜之前沒程序猿們,公司那些人應(yīng)該是一個個手動轉(zhuǎn)。強(qiáng)烈為猿們感嘆,幫你們做了這么多事,還在那抱怨....無法滿足你們的需求啊;
微軟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 { //構(gòu)造函數(shù) public ExcelConverter() { } /// <summary> /// 轉(zhuǎn)換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之后才有這函數(shù) 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 第一個選項指定轉(zhuǎn)出為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 ; } //主動激活垃圾回收器,主要是避免超大批量轉(zhuǎn)文檔時,內(nèi)存占用過多,而垃圾回收器并不是時刻都在運行! GC.Collect(); GC.WaitForPendingFinalizers(); } return true ; } } } |
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
原文鏈接:https://blog.csdn.net/chenqiangdage/article/details/20408731