2012-08-28 89 views
1

我有一個PHP網站,我正在寫一些數據到一個Excel文件。我的Excel文件可以用一個按鈕下載。它會打開一個窗口或下載管理器(如果已配置)。到目前爲止,一切都很好。現在我想將此文件自動發送到客戶端的默認打印機。當用戶點擊打印時,網頁必須發送「EXCEL FILE」到打印機。不像JavaScript中的「window.print()」函數。發送Excel文件到客戶端的打印機

有沒有辦法用JavaScript或AJAX做到這一點?客戶端是否必須下載Excel文件才能將其發送到默認打印機?我試圖用「src = bla_bla.xls」使用隱藏的「iframe」,但它會自動打開下載窗口。

簡單地說,我想這的Excel文件,這是在服務器準備,被髮送到客戶端的默認打印機,開闢打印選項窗口。

+2

不,謝天謝地,想象一下如果你的打印機可能會吐出的廣告。 – 2012-08-28 09:10:56

+0

我希望用戶提示打印窗口,我的意思是按確定,然後將其打印到打印機。不是全部自動。我只想要打印excel文件。不是整個頁面。 PDF文件可以在隱藏的iframe中打開,並可以通過「window.print()」代碼發送到打印機。但不幸的是,它與Excel文件不一樣。 –

+0

不認爲我得到這個問題,但由於瀏覽器本身不支持excel文件,它必須要求客戶端機器如何處理它,因此您可以打開\ save對話框。 – 2012-08-28 09:28:40

回答

0

要做到這一點...你需要一個像JavaScript或VB這樣的客戶端腳本語言。 php是服務器端,不知道任何關於客戶端的打印機..

+0

謝謝。我知道所有這些事情。看來我需要客戶端腳本語言,但如何將Excel文件發送到打印機?我可以使用Iframe和window.print()函數來打印PDF文件,但是如果我嘗試加載Excel文件,它會打開下載窗口並且不會在Iframe內顯示任何內容。 –

1

我認爲你遇到的問題與ActiveX的安全障礙是因爲你嵌入到網頁excel。通過使用Excel的發佈方法將工作表發佈爲HTML,應該可以打印工作表。我使用它來創建一個電子郵件的HTML。

Dim rngeTableRange As Range 
Dim lsTableFileName As String 

lsTableFileName = <filepath and name for HTML output as string> 
Set rngeTableRange = ActiveSheet.UsedRange 

ActiveWorkbook.PublishObjects.Add(xlSourceRange, lsTableFileName, _ 
rngeTableRange.Parent.Name, rngeTableRange.Address, xlHtmlStatic).Publish True 

如果您希望打印輸出顯示爲電子表格,您可以在發佈工作表之前添加邊框。下面的VBA代碼就會把邊框每個細胞周圍:

With ActiveSheet.UsedRange.Borders(xlEdgeLeft) 
    .LineStyle = xlContinuous 
    .Weight = xlThin 
End With 
With ActiveSheet.UsedRange.Borders(xlEdgeTop) 
    .LineStyle = xlContinuous 
    .Weight = xlThin 
End With 
With ActiveSheet.UsedRange.Borders(xlEdgeBottom) 
    .LineStyle = xlContinuous 
    .Weight = xlThin 
End With 
With ActiveSheet.UsedRange.Borders(xlEdgeRight) 
    .LineStyle = xlContinuous 
    .Weight = xlThin 
End With 
With ActiveSheet.UsedRange.Borders(xlInsideVertical) 
    .LineStyle = xlContinuous 
    .Weight = xlThin 
End With 
With ActiveSheet.UsedRange.Borders(xlInsideHorizontal) 
    .LineStyle = xlContinuous 
    .Weight = xlThin 
End With 

的結果應該是不到風度導致安全警告spreadheet的HTML圖像,我會承擔將打印。

相關問題