Я разрабатываю простое настольное приложение VB.NET для небольшого полиграфического бизнеса. Он имеет основную WinForm, кнопки для открытия файлов JPG / PDF / Word / Excel, открытия связанной программы, печати файла, захвата задания спула и, наконец, взимания платы с пользователя за то, что печатается, в зависимости от имени принтера и количества страниц. , размер страниц и стоимость страницы. Ничего страшного. На хост-машинах установлена ОС Win7.
Когда затем пользователь хочет распечатать файл 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. Framework - это клиентский профиль .NET 4.0. ОС - Win7.
Большое спасибо :)