Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (1)

Лучшие ответы пользователя

Все ответы (4)
  • Как отправить файл .xlsx на печать лежащий возле exeШника программы c#?

    pilartser
    @pilartser
    Выдрал из своего старого консольного проектика, написанного впопыхах.

    internal static string SelectPrinter()
            {
                System.Windows.Forms.PrintDialog prntDlg = new System.Windows.Forms.PrintDialog();
                if (prntDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    if (prntDlg.PrinterSettings.IsValid)
                        return prntDlg.PrinterSettings.PrinterName;
                }
                return "";
            }
    
            internal static string GetPort(string printerName)
            {
                var devices = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion\Devices"); //Read-accessible even when using a locked-down account
                try
                {
    
                    foreach (string name in devices.GetValueNames())
                    {
                        if (name == printerName)
                        {
                            var value = (String)devices.GetValue(name);  
                            var port = Regex.Match(value, @"(,\w+:)", RegexOptions.IgnoreCase).Value;
                            port = port.Replace(",", "");
                            return port;
                        }
                    }
                }
                catch
                {
                    throw;
                }
                return "";
            }
    
            internal static string GetActivePrinter()
            {
                string printer = SelectPrinter();
                if (printer != "")
                {
                    string port = GetPort(printer);
                    if (port != "")
                        return printer + " (" + port + ")";
                    else
                        return "";
                }
                else
                    return "";
            }
    
            internal static void PrintExcelSheet(Excel.Application app, Excel.Worksheet sheet, String activePrinter)
            {
                try
                {
                    app.ActivePrinter = activePrinter;
                    sheet.PrintOutEx();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Print error:\r\n" + e.Message);
                }
            }


    Ну и вызов
    string printerName = GetActivePrinter();
    if (printerName != "")
    {
       Console.WriteLine("Menu send to printer: " + printerName);
       PrintExcelSheet(xlApp, xlWorkSheet, printerName);
    }
    Ответ написан
    Комментировать