C#將Excel轉(zhuǎn)成PDF的方法
PS:公司的業(yè)務(wù)中有個(gè)超級大的作業(yè)就是把OFFICE文檔轉(zhuǎn)成PDF,我猜之前沒程序猿們,公司那些人應(yīng)該是一個(gè)個(gè)手動(dòng)轉(zhuǎn)。強(qiáng)烈為猿們感嘆,幫你們做了這么多事,還在那抱怨....無法滿足你們的需求??;
微軟net平臺提供了對Office文檔非常好的支持;其中有com組件直接集成到了VS中。利用這些API可以快速的免去N多繁瑣的工作;
以下代碼是翻閱了公司的代碼,一個(gè)個(gè)敲出來的;奉上代碼:
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 第一個(gè)選項(xiàng)指定轉(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;
}
//主動(dòng)激活垃圾回收器,主要是避免超大批量轉(zhuǎn)文檔時(shí),內(nèi)存占用過多,而垃圾回收器并不是時(shí)刻都在運(yùn)行!
GC.Collect();
GC.WaitForPendingFinalizers();
}
return true;
}
}
}
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
C# web應(yīng)用程序不能訪問app_code下類的原因以及解決方法
本文主要介紹了C#web應(yīng)用程序不能訪問app_code下類的原因以及解決方法。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
C#的FileSystemWatcher用法實(shí)例詳解
這篇文章主要介紹了C#的FileSystemWatcher用法,以實(shí)例形似詳細(xì)分析了FileSystemWatcher控件主要功能,并總結(jié)了FileSystemWatcher控件使用的技巧,需要的朋友可以參考下2014-11-11
C# listview添加combobox到單元格的實(shí)現(xiàn)代碼
從別處轉(zhuǎn)來的,自己進(jìn)行了一些小的修改,還不錯(cuò),你自己先拖一個(gè)ListView1和一個(gè)ComboBox1,需要的朋友可以參考下2014-06-06
C#使用Ado.Net更新和添加數(shù)據(jù)到Excel表格的方法
這篇文章主要介紹了C#使用Ado.Net更新和添加數(shù)據(jù)到Excel表格的方法,較為詳細(xì)的分析了OLEDB的原理與使用技巧,可實(shí)現(xiàn)較為方便的操作Excel數(shù)據(jù),需要的朋友可以參考下2015-04-04
C#安裝OpenCvSharp4的實(shí)現(xiàn)步驟
OpenCv是一款開源的圖像處理庫,本文就介紹了C#安裝OpenCvSharp4的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2022-05-05
C#使用WMI實(shí)現(xiàn)監(jiān)聽進(jìn)程的啟動(dòng)和關(guān)閉
Windows Management Instrumentation(WMI)是用于管理基于 Windows 操作系統(tǒng)的數(shù)據(jù)和操作的基礎(chǔ)結(jié)構(gòu),本文將使用WMI實(shí)現(xiàn)監(jiān)聽進(jìn)程的啟動(dòng)和關(guān)閉,感興趣的可以了解下2024-01-01

