1

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

有没有办法用 javascript 或 AJAX 做到这一点?客户端是否必须下载 Excel 文件才能将其发送到默认打印机?我尝试使用带有“src = bla_bla.xls”的隐藏“iframe”,但它会自动打开下载窗口。

简要地说,我希望将这个在服务器上准备好的Excel文件发送到客户端的默认打印机并打开打印选项窗口。

4

2 回答 2

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

结果应该是不会导致安全警告的电子表格的 HTML 图像,我认为它是可打印的。

于 2012-09-22T09:40:18.523 回答
0

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

于 2012-08-28T09:12:17.237 回答