将Excel文件发送到客户端的打印机

时间:2012-08-28 09:06:56

标签: php excel printing

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

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

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

2 个答案:

答案 0 :(得分: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图像,不会导致安全警告,我认为可以打印。

答案 1 :(得分:0)

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