将Excel文件发送到客户端';s打印机


Send Excel file to client's printer

我有一个PHP网站,正在将一些数据写入Excel文件。我的Excel文件可以通过按钮下载。它打开一个窗口或下载管理器(如果已配置)。到目前为止一切正常。现在我想将此文件自动发送到客户端的默认打印机。当用户点击打印时,网页必须将"EXCEL文件"发送到打印机。不像JavaScript中的"window.print()"函数。

有没有一种方法可以用javascript或AJAX实现这一点?客户端是否必须下载Excel文件才能将其发送到默认打印机?我试图使用一个隐藏的"iframe"answers"src=bla_bla.xls",但它会自动打开下载窗口。

简而言之,我希望在服务器上准备的Excel文件发送到客户端的默认打印机并打开打印选项窗口。

我认为您在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图像,它不会导致安全警告,我认为它是可打印的。

要做到这一点。。。您需要像javascript或vb.php这样的客户端脚本语言。php是服务器端的,对客户端的打印机一无所知。。