我正在开发一个简单的VB.NET桌面应用程序,用于一点印刷业务。它有一个主要的WinForm,用于打开JPG/PDF/Word/Excel文件的按钮,打开相关程序,打印文件,捕获卷轴作业,并最终根据打印机名称,打印页数,页面大小和每页成本。没什么大不了。主机有Win7操作系统。VB.NET打开并打印一个excel文件
当用户想要打印XLS文件时,我希望应用程序打开Excel 2010,打开之前通过文件对话框选择的文件。当Excel打开时,直接进入打印对话框,然后当作业完成加载后台时,我捕获该事件并杀死Excel进程。
我的问题是:
我不能直接打开Excel打印对话框。 Excel会响应“打印”动词。但它只是使用默认打印机进行打印。我希望它打开并转到打印对话框。我不想只是默认打印机打印的,确实需要让用户选择所需的打印机,页数,份数等
我想用下面的代码来做到这一点:
Dim openFileDialog1 As New OpenFileDialog()
Dim filePath As String = ""
Dim startInfo As ProcessStartInfo
'openFileDialog1.InitialDirectory = "c:\"
openFileDialog1.Filter = "XLS Files (*.xls)|*.xls|XLSX Files (*.xlsx)|*.xlsx|All files (*.*)|*.*"
openFileDialog1.FilterIndex = 1
openFileDialog1.RestoreDirectory = True
If (DialogResult.OK) = openFileDialog1.ShowDialog(Me) Then
filePath = openFileDialog1.FileName
Else
Exit Sub
End If
startInfo = New ProcessStartinfo(rutaArchivo)
With startInfo
.FileName = filePath
.WindowStyle = ProcessWindowStyle.Normal
.Verb = "print"
.CreateNoWindow = False
.UseShellExecute = True
End With
Try
System.Diagnostics.Process.Start(startInfo)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
IDE是SharpDevelop 4.3。 框架是.NET 4.0客户端配置文件。 操作系统是Win7。
非常感谢:)