簡體   English   中英

使用JavaScript將Excel轉換為PDF

[英]Convert Excel to PDF using JavaScript

如何以自動方式將Excel文檔(文件)轉換為PDF? 我正在嘗試使此處找到的解決方案適合Excel。 到目前為止,我有這個:

var fso = new ActiveXObject("Scripting.FileSystemObject");
var docPath = WScript.Arguments(0);
docPath = fso.GetAbsolutePathName(docPath);

var pdfPath = docPath.replace(/\.xls[^.]*$/, ".pdf");
var objExcel = null;

try
{
    WScript.Echo("Saving '" + docPath + "' as '" + pdfPath + "'...");

    objExcel = new ActiveXObject("Excel.Application");
    objExcel.Visible = false;

    var objExcel = objExcel.Workbooks.Open(docPath);

    var wdFormatPdf = 17;
    objExcel.SaveAs(pdfPath, wdFormatPdf);
    objExcel.Close();

    WScript.Echo("Done.");
}
finally
{
    if (objExcel != null)
    {
        objExcel.Quit();
    }
}

我得到以下輸出:

Saving 'somefile.xlsx' as 'somefile.pdf'...
Done.
..\SaveXLSXAsPDF.js(27, 9) (null): The object invoked has disconnected from its clients.

已創建PDF文件,但該文件無效,無法在閱讀器中打開。 我認為格式17不適用於Excel。 有誰知道正確的電話號碼或如何使它正常工作?

編輯:我發現這里提到正確的數字(57),但現在我收到此錯誤:

r:\Web\Roman\SaveXLSXAsPDF.js(27, 13) Microsoft JScript runtime error: Class doesn't support Automation

嘗試使用.ExportAsFixedFormat屬性而不是.SaveAs 第一個適用於在Excel中創建PDF文件,但不適用於不支持PDF格式的SaveAs。

我想您需要這樣的東西:

objExcel.ExportAsFixedFormat(0, pdfPath)

您正在第15行破壞objExcel:

var objExcel = objExcel.Workbooks.Open(docPath);

這些代碼行需要使用其他變量,例如:

var objWorkbook = objExcel.Workbooks.Open(docPath);

var wdFormatPdf = 57;
objWorkbook.SaveAs(pdfPath, wdFormatPdf);
objWorkbook.Close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM