Example #1
0
        public void mofileexcelvualuu()
        {
            if (duongdanfileexcel != null)
            {
                var app = new excel.Application();

                excel.Workbooks book = app.Workbooks;
                excel.Workbook  sh   = book.Open(duongdanfileexcel);
                app.Visible = true;

                sh.PrintOutEx();
            }
        }
Example #2
0
        public void taovainfileexcel(DataTable dt, string tongma, string ngaybatdau, string ngayketthuc)
        {
            ExcelPackage   ExcelPkg  = new ExcelPackage();
            ExcelWorksheet worksheet = ExcelPkg.Workbook.Worksheets.Add("hts");

            worksheet.Cells["A1:C1"].Merge = true;
            worksheet.Cells["A2:C2"].Merge = true;
            worksheet.Cells["A3:C3"].Merge = true;
            worksheet.Cells["A1"].Value    = "Danh mục VM _ Mã chưa trưng";
            worksheet.Cells["A2"].Value    = "Từ ngày: " + ngaybatdau + " - " + ngayketthuc;

            worksheet.Cells["A3"].Value = "Tổng mã chưa trưng:  " + tongma;
            worksheet.Cells["A5"].LoadFromDataTable(dt, true, OfficeOpenXml.Table.TableStyles.Light1);

            worksheet.Column(1).Width = 10;
            worksheet.Column(2).Width = 13;
            worksheet.Column(3).Width = 10;


            //worksheet.Cells[worksheet.Dimension.End.Row + 1, 1].Value = "Tổng sản phẩm:";
            //worksheet.Cells[worksheet.Dimension.End.Row, 2].Value = tongsp;

            var allCells = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column];
            var cellFont = allCells.Style.Font;

            cellFont.SetFromFont(new Font("Calibri", 10));

            worksheet.PrinterSettings.LeftMargin        = 0.2M / 2.54M;
            worksheet.PrinterSettings.RightMargin       = 0.2M / 2.54M;
            worksheet.PrinterSettings.TopMargin         = 0.2M / 2.54M;
            worksheet.Protection.IsProtected            = false;
            worksheet.Protection.AllowSelectLockedCells = false;
            if (File.Exists("hts.xlsx"))
            {
                File.Delete("hts.xlsx");
            }
            ExcelPkg.SaveAs(new FileInfo("hts.xlsx"));
            ExcelPkg.Dispose();

            var app = new excel.Application();

            excel.Workbooks book = app.Workbooks;
            excel.Workbook  sh   = book.Open(Path.GetFullPath("hts.xlsx"));
            //app.Visible = true;
            sh.PrintOutEx();
            app.Quit();
            Marshal.FinalReleaseComObject(app);
            Marshal.FinalReleaseComObject(book);
        }
Example #3
0
        public static void taovainfileexcelchuyenhang(DataTable dt, string tongsp, string noinhan, string tencuahang)
        {
            ExcelPackage   ExcelPkg  = new ExcelPackage();
            ExcelWorksheet worksheet = ExcelPkg.Workbook.Worksheets.Add("hts");

            worksheet.Cells["A1"].Value = tencuahang + " _ Điều chuyển";
            worksheet.Cells["A2"].Value = "Đến : " + noinhan;
            worksheet.Cells["A3"].Value = "Ngày tạo : " + DateTime.Now.ToString("dd-MM-yyyy");
            worksheet.Cells["A4"].Value = "Tổng SP : " + tongsp + " sp";
            worksheet.Cells["A6"].LoadFromDataTable(dt, true, OfficeOpenXml.Table.TableStyles.Light1);

            worksheet.Column(1).Width = 28;
            worksheet.Column(2).Width = 4;



            worksheet.Cells[worksheet.Dimension.End.Row + 1, 1].Value = "Tổng sản phẩm:";
            worksheet.Cells[worksheet.Dimension.End.Row, 2].Value     = tongsp;

            var allCells = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column];
            var cellFont = allCells.Style.Font;

            cellFont.SetFromFont(new Font("Calibri", 10));

            worksheet.PrinterSettings.LeftMargin        = 0.2M / 2.54M;
            worksheet.PrinterSettings.RightMargin       = 0.2M / 2.54M;
            worksheet.PrinterSettings.TopMargin         = 0.2M / 2.54M;
            worksheet.Protection.IsProtected            = false;
            worksheet.Protection.AllowSelectLockedCells = false;
            if (File.Exists("hts.xlsx"))
            {
                File.Delete("hts.xlsx");
            }
            ExcelPkg.SaveAs(new FileInfo("hts.xlsx"));
            ExcelPkg.Dispose();

            var app = new excel.Application();

            excel.Workbooks book = app.Workbooks;
            excel.Workbook  sh   = book.Open(Path.GetFullPath("hts.xlsx"));
            //app.Visible = true;
            sh.PrintOutEx();
            book.Close();
            app.Quit();
        }
Example #4
0
        public static void taovainfileexcel(DataTable dt, string tongsp, int sobanin = 1)
        {
            ExcelPackage   ExcelPkg  = new ExcelPackage();
            ExcelWorksheet worksheet = ExcelPkg.Workbook.Worksheets.Add("hts");

            worksheet.Cells["A1"].LoadFromDataTable(dt, true, OfficeOpenXml.Table.TableStyles.Light1);

            worksheet.Column(1).Width = 28;
            worksheet.Column(2).Width = 4;



            worksheet.Cells[worksheet.Dimension.End.Row + 1, 1].Value = "Tổng sản phẩm:";
            worksheet.Cells[worksheet.Dimension.End.Row, 2].Value     = tongsp;

            var allCells = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column];
            var cellFont = allCells.Style.Font;

            cellFont.SetFromFont(new Font("Calibri", 11));

            worksheet.PrinterSettings.LeftMargin        = 0.2M / 2.54M;
            worksheet.PrinterSettings.RightMargin       = 0.2M / 2.54M;
            worksheet.PrinterSettings.TopMargin         = 0.2M / 2.54M;
            worksheet.Protection.IsProtected            = false;
            worksheet.Protection.AllowSelectLockedCells = false;
            if (File.Exists("hts.xlsx"))
            {
                File.Delete("hts.xlsx");
            }
            ExcelPkg.SaveAs(new FileInfo("hts.xlsx"));
            ExcelPkg.Dispose();

            var app = new excel.Application();

            excel.Workbooks book = app.Workbooks;
            excel.Workbook  sh   = book.Open(Path.GetFullPath("hts.xlsx"));
            //app.Visible = true;
            for (int i = 0; i < sobanin; i++)
            {
                sh.PrintOutEx();
            }

            book.Close();
            app.Quit();
        }
Example #5
0
        public static void taovainfileexceltheoPhieu(DataTable dt, string sophieu, string noidung, string soluong, string ngay)
        {
            ExcelPackage   ExcelPkg  = new ExcelPackage();
            ExcelWorksheet worksheet = ExcelPkg.Workbook.Worksheets.Add("hts");

            worksheet.Cells["A1"].Value = "Số phiếu: " + sophieu;
            worksheet.Cells["A2"].Value = "Nội dung: " + noidung;
            worksheet.Cells["A3"].Value = "Tổng SL: " + soluong + "sp";
            worksheet.Cells["A4"].Value = "Ngày/Phiếu: " + ngay;

            worksheet.Cells["A6"].LoadFromDataTable(dt, true, OfficeOpenXml.Table.TableStyles.Light1);

            worksheet.Column(1).Width = 28;
            worksheet.Column(2).Width = 4;

            var allCells = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column];
            var cellFont = allCells.Style.Font;

            cellFont.SetFromFont(new Font("Calibri", 10));

            worksheet.PrinterSettings.LeftMargin        = 0.2M / 2.54M;
            worksheet.PrinterSettings.RightMargin       = 0.2M / 2.54M;
            worksheet.PrinterSettings.TopMargin         = 0.2M / 2.54M;
            worksheet.Protection.IsProtected            = false;
            worksheet.Protection.AllowSelectLockedCells = false;
            if (File.Exists("hts.xlsx"))
            {
                File.Delete("hts.xlsx");
            }
            ExcelPkg.SaveAs(new FileInfo("hts.xlsx"));
            ExcelPkg.Dispose();

            var app = new excel.Application();

            excel.Workbooks book = app.Workbooks;
            excel.Workbook  sh   = book.Open(Path.GetFullPath("hts.xlsx"));
            //app.Visible = true;
            sh.PrintOutEx();
            book.Close();
            app.Quit();
        }
Example #6
0
        public void taovainfileexcelchuyenhang(DataTable dt, string tongsp)
        {
            ExcelPackage   ExcelPkg  = new ExcelPackage();
            ExcelWorksheet worksheet = ExcelPkg.Workbook.Worksheets.Add("hts");

            worksheet.Cells["A1"].Value = "27 Lê Văn Lương _ Điều chuyển";
            worksheet.Cells["A3"].LoadFromDataTable(dt, true);

            worksheet.Column(1).Width = 28;
            worksheet.Column(2).Width = 4;



            worksheet.Cells[worksheet.Dimension.End.Row + 1, 1].Value = "Tổng sản phẩm:";
            worksheet.Cells[worksheet.Dimension.End.Row, 2].Value     = tongsp;

            var allCells = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column];
            var cellFont = allCells.Style.Font;

            cellFont.SetFromFont(new Font("Calibri", 10));

            worksheet.PrinterSettings.LeftMargin        = 0.2M / 2.54M;
            worksheet.PrinterSettings.RightMargin       = 0.2M / 2.54M;
            worksheet.PrinterSettings.TopMargin         = 0.2M / 2.54M;
            worksheet.Protection.IsProtected            = false;
            worksheet.Protection.AllowSelectLockedCells = false;
            if (File.Exists("hts.xlsx"))
            {
                File.Delete("hts.xlsx");
            }
            ExcelPkg.SaveAs(new FileInfo("hts.xlsx"));
            var app = new excel.Application();

            excel.Workbooks book = app.Workbooks;
            excel.Workbook  sh   = book.Open(Path.GetFullPath("hts.xlsx"));
            //app.Visible = true;
            sh.PrintOutEx();
            app.Quit();
        }
Example #7
0
        // Main conversion routine
        public static new int Convert(String inputFile, String outputFile, Hashtable options)
        {
            Boolean running = (Boolean)options["noquit"];

            Microsoft.Office.Interop.Excel.Application app       = null;
            Microsoft.Office.Interop.Excel.Workbooks   workbooks = null;
            Microsoft.Office.Interop.Excel.Workbook    workbook  = null;
            System.Object activeSheet       = null;
            Window        activeWindow      = null;
            Windows       wbWin             = null;
            Hashtable     templatePageSetup = new Hashtable();

            String  tmpFile  = null;
            object  oMissing = System.Reflection.Missing.Value;
            Boolean nowrite  = (Boolean)options["readonly"];

            try
            {
                // Excel can be very slow to start up, so try to get the COM
                // object a few times
                int tries = 10;
                app = new Microsoft.Office.Interop.Excel.Application();
                while (tries > 0)
                {
                    try
                    {
                        // Try to set a property on the object
                        app.ScreenUpdating = false;
                    }
                    catch (COMException)
                    {
                        // Decrement the number of tries and have a bit of a snooze
                        tries--;
                        Thread.Sleep(500);
                        continue;
                    }
                    // Looks ok, so bail out of the loop
                    break;
                }
                if (tries == 0)
                {
                    ReleaseCOMObject(app);
                    return((int)ExitCode.ApplicationError);
                }

                app.Visible                   = true;
                app.DisplayAlerts             = false;
                app.AskToUpdateLinks          = false;
                app.AlertBeforeOverwriting    = false;
                app.EnableLargeOperationAlert = false;
                app.Interactive               = false;
                app.FeatureInstall            = Microsoft.Office.Core.MsoFeatureInstall.msoFeatureInstallNone;

                var     onlyActiveSheet       = (Boolean)options["excel_active_sheet"];
                Boolean includeProps          = !(Boolean)options["excludeprops"];
                Boolean skipRecalculation     = (Boolean)options["excel_no_recalculate"];
                Boolean showHeadings          = (Boolean)options["excel_show_headings"];
                Boolean showFormulas          = (Boolean)options["excel_show_formulas"];
                Boolean isHidden              = (Boolean)options["hidden"];
                Boolean screenQuality         = (Boolean)options["screen"];
                Boolean updateLinks           = !(Boolean)options["excel_no_link_update"];
                int     maxRows               = (int)options[@"excel_max_rows"];
                int     worksheetNum          = (int)options["excel_worksheet"];
                int     sheetForConversionIdx = 0;
                activeWindow = app.ActiveWindow;
                Sheets               allSheets = null;
                XlFileFormat         fmt       = XlFileFormat.xlOpenXMLWorkbook;
                XlFixedFormatQuality quality   = XlFixedFormatQuality.xlQualityStandard;
                if (isHidden)
                {
                    // Try and at least minimise it
                    app.WindowState = XlWindowState.xlMinimized;
                    app.Visible     = false;
                }

                String readPassword = "";
                if (!String.IsNullOrEmpty((String)options["password"]))
                {
                    readPassword = (String)options["password"];
                }
                Object oReadPass = (Object)readPassword;

                String writePassword = "";
                if (!String.IsNullOrEmpty((String)options["writepassword"]))
                {
                    writePassword = (String)options["writepassword"];
                }
                Object oWritePass = (Object)writePassword;

                // Check for password protection and no password
                if (Converter.IsPasswordProtected(inputFile) && String.IsNullOrEmpty(readPassword))
                {
                    Console.WriteLine("Unable to open password protected file");
                    return((int)ExitCode.PasswordFailure);
                }

                app.EnableEvents = (bool)options["excel_auto_macros"];
                workbooks        = app.Workbooks;
                // If we have no write password and we're attempting to open for writing, we might be
                // caught out by an unexpected write password
                if (writePassword == "" && !nowrite)
                {
                    oWritePass = (Object)"FAKEPASSWORD";
                    try
                    {
                        workbook = workbooks.Open(inputFile, updateLinks, nowrite, oMissing, oReadPass, oWritePass, true, oMissing, oMissing, oMissing, oMissing, oMissing, false, oMissing, oMissing);
                    }
                    catch (System.Runtime.InteropServices.COMException)
                    {
                        // Attempt to open it in read-only mode
                        workbook = workbooks.Open(inputFile, updateLinks, true, oMissing, oReadPass, oWritePass, true, oMissing, oMissing, oMissing, oMissing, oMissing, false, oMissing, oMissing);
                    }
                }
                else
                {
                    workbook = workbooks.Open(inputFile, updateLinks, nowrite, oMissing, oReadPass, oWritePass, true, oMissing, oMissing, oMissing, oMissing, oMissing, false, oMissing, oMissing);
                }

                // Add in a delay to let Excel sort itself out
                AddCOMDelay(options);

                // Unable to open workbook
                if (workbook == null)
                {
                    return((int)ExitCode.FileOpenFailure);
                }

                if (app.EnableEvents)
                {
                    workbook.RunAutoMacros(XlRunAutoMacro.xlAutoOpen);
                }

                // Get any template options
                SetPageOptionsFromTemplate(app, workbooks, options, ref templatePageSetup);

                // Get the sheets
                allSheets = workbook.Sheets;

                // Try and avoid xls files raising a dialog
                var temporaryStorageDir = Path.GetTempFileName();
                File.Delete(temporaryStorageDir);
                Directory.CreateDirectory(temporaryStorageDir);
                // We will save as xlsb (binary format) since this doesn't raise some errors when processing
                tmpFile = Path.Combine(temporaryStorageDir, Path.GetFileNameWithoutExtension(inputFile) + ".xlsb");
                fmt     = XlFileFormat.xlExcel12;

                // Set up the print quality
                if (screenQuality)
                {
                    quality = XlFixedFormatQuality.xlQualityMinimum;
                }

                // If a worksheet has been specified, try and use just the one
                if (worksheetNum > 0)
                {
                    // Force us just to use the active sheet
                    onlyActiveSheet = true;
                    try
                    {
                        if (worksheetNum > allSheets.Count)
                        {
                            // Sheet count is too big
                            return((int)ExitCode.WorksheetNotFound);
                        }
                        if (allSheets[worksheetNum] is _Worksheet)
                        {
                            ((_Worksheet)allSheets[worksheetNum]).Activate();
                            sheetForConversionIdx = ((_Worksheet)allSheets[worksheetNum]).Index;
                        }
                        else if (allSheets[worksheetNum] is _Chart)
                        {
                            ((_Chart)allSheets[worksheetNum]).Activate();
                            sheetForConversionIdx = ((_Chart)allSheets[worksheetNum]).Index;
                        }
                    }
                    catch (Exception)
                    {
                        return((int)ExitCode.WorksheetNotFound);
                    }
                }

                if (showFormulas)
                {
                    // Determine whether to show formulas
                    try
                    {
                        activeWindow.DisplayFormulas = true;
                    }
                    catch (Exception) { }
                }

                // Keep the windows hidden
                if (isHidden)
                {
                    wbWin = workbook.Windows;
                    if (null != wbWin)
                    {
                        if (wbWin.Count > 0)
                        {
                            wbWin[1].Visible = false;
                        }
                    }
                    if (null != activeWindow)
                    {
                        activeWindow.Visible = false;
                    }
                }

                // Keep track of the active sheet
                if (workbook.ActiveSheet != null)
                {
                    activeSheet = workbook.ActiveSheet;
                }

                // Large excel files may simply not print reliably - if the excel_max_rows
                // configuration option is set, then we must close up and forget about
                // converting the file. However, if a print area is set in one of the worksheets
                // in the document, then assume the author knew what they were doing and
                // use the print area.

                // We may need to loop through all the worksheets in the document
                // depending on the options given. If there are maximum row restrictions
                // or formulas are being shown, then we need to loop through all the
                // worksheets
                if (maxRows > 0 || showFormulas || showHeadings)
                {
                    var row_count_check_ok = true;
                    var found_rows         = 0;
                    var found_worksheet    = "";
                    // Loop through all the sheets (worksheets and charts)
                    for (int wsIdx = 1; wsIdx <= allSheets.Count; wsIdx++)
                    {
                        var ws = allSheets.Item[wsIdx];

                        // Skip anything that is not the active sheet
                        if (onlyActiveSheet)
                        {
                            // Have to be careful to treat _Worksheet and _Chart items differently
                            try
                            {
                                int itemIndex = 1;
                                if (activeSheet is _Worksheet)
                                {
                                    itemIndex = ((Worksheet)activeSheet).Index;
                                }
                                else if (activeSheet is _Chart)
                                {
                                    itemIndex = ((Microsoft.Office.Interop.Excel.Chart)activeSheet).Index;
                                }
                                if (wsIdx != itemIndex)
                                {
                                    ReleaseCOMObject(ws);
                                    continue;
                                }
                            }
                            catch (Exception)
                            {
                                if (ws != null)
                                {
                                    ReleaseCOMObject(ws);
                                }
                                continue;
                            }
                            sheetForConversionIdx = wsIdx;
                        }

                        if (showHeadings && ws is _Worksheet)
                        {
                            PageSetup pageSetup = null;
                            try
                            {
                                pageSetup = ((Worksheet)ws).PageSetup;
                                pageSetup.PrintHeadings = true;
                            }
                            catch (Exception) { }
                            finally
                            {
                                ReleaseCOMObject(pageSetup);
                            }
                        }

                        // If showing formulas, make things auto-fit
                        if (showFormulas && ws is _Worksheet)
                        {
                            Range cols = null;
                            try
                            {
                                ((_Worksheet)ws).Activate();
                                activeWindow.DisplayFormulas = true;
                                cols = ((Worksheet)ws).Columns;
                                cols.AutoFit();
                            }
                            catch (Exception) { }
                            finally
                            {
                                ReleaseCOMObject(cols);
                            }
                        }

                        // If there is a maximum row count, make sure we check each worksheet
                        if (maxRows > 0 && ws is _Worksheet)
                        {
                            // Check for a print area
                            var pageSetup = ((Worksheet)ws).PageSetup;
                            var printArea = pageSetup.PrintArea;
                            ReleaseCOMObject(pageSetup);
                            if (string.IsNullOrEmpty(printArea))
                            {
                                // There is no print area, check that the row count is <= to the
                                // excel_max_rows value. Note that we can't just take the range last
                                // row, as this may return a huge value, rather find the last non-blank
                                // row.
                                var row_count = 0;
                                var range     = ((Worksheet)ws).UsedRange;
                                if (range != null)
                                {
                                    var rows = range.Rows;
                                    if (rows != null && rows.Count > maxRows)
                                    {
                                        var cells = range.Cells;
                                        if (cells != null)
                                        {
                                            var cellSearch = cells.Find("*", oMissing, oMissing, oMissing, oMissing, Microsoft.Office.Interop.Excel.XlSearchDirection.xlPrevious, false, oMissing, oMissing);
                                            // Make sure we actually get some results, since the worksheet may be totally blank
                                            if (cellSearch != null)
                                            {
                                                row_count       = cellSearch.Row;
                                                found_worksheet = ((Worksheet)ws).Name;
                                            }
                                            ReleaseCOMObject(cellSearch);
                                        }
                                        ReleaseCOMObject(cells);
                                    }
                                    ReleaseCOMObject(rows);
                                }
                                ReleaseCOMObject(range);

                                if (row_count > maxRows)
                                {
                                    // Too many rows on this worksheet - mark the workbook as unprintable
                                    row_count_check_ok = false;
                                    found_rows         = row_count;
                                    Converter.ReleaseCOMObject(ws);
                                    break;
                                }
                            }
                        } // End of row check
                        Converter.ReleaseCOMObject(ws);
                    }

                    // Make sure we are not converting a document with too many rows
                    if (row_count_check_ok == false)
                    {
                        throw new Exception(String.Format("Too many rows to process ({0}) on worksheet {1}", found_rows, found_worksheet));
                    }
                }

                // Allow for re-calculation to be skipped
                if (skipRecalculation)
                {
                    app.Calculation         = XlCalculation.xlCalculationManual;
                    app.CalculateBeforeSave = false;
                }

                workbook.SaveAs(tmpFile, fmt, Type.Missing, Type.Missing, Type.Missing, false, XlSaveAsAccessMode.xlNoChange, Type.Missing, false, Type.Missing, Type.Missing, Type.Missing);

                if (onlyActiveSheet)
                {
                    // Set up a delegate function for times we want to print
                    PrintDocument printFunc = delegate(string destination, string printer)
                    {
                        ((Worksheet)activeSheet).PrintOutEx(ActivePrinter: printer, PrintToFile: true, PrToFileName: destination);
                    };

                    if (sheetForConversionIdx > 0)
                    {
                        activeSheet = allSheets.Item[sheetForConversionIdx];
                    }
                    if (activeSheet is _Worksheet)
                    {
                        var wps = ((_Worksheet)activeSheet).PageSetup;
                        SetPageSetupProperties(templatePageSetup, wps);
                        if (String.IsNullOrEmpty((string)options["printer"]))
                        {
                            try
                            {
                                ((Worksheet)activeSheet).ExportAsFixedFormat(XlFixedFormatType.xlTypePDF,
                                                                             outputFile, quality, includeProps, false, Type.Missing, Type.Missing, false, Type.Missing);
                            }
                            catch (Exception)
                            {
                                if (!String.IsNullOrEmpty((string)options["fallback_printer"]))
                                {
                                    PrintToGhostscript((string)options["fallback_printer"], outputFile, printFunc);
                                }
                                else
                                {
                                    throw;
                                }
                            }
                        }
                        else
                        {
                            PrintToGhostscript((string)options["printer"], outputFile, printFunc);
                        }
                        ReleaseCOMObject(wps);
                    }
                    else if (activeSheet is _Chart)
                    {
                        var wps = ((_Chart)activeSheet).PageSetup;
                        SetPageSetupProperties(templatePageSetup, wps);
                        ((Microsoft.Office.Interop.Excel.Chart)activeSheet).ExportAsFixedFormat(XlFixedFormatType.xlTypePDF,
                                                                                                outputFile, quality, includeProps, false, Type.Missing, Type.Missing, false, Type.Missing);
                        ReleaseCOMObject(wps);
                    }
                    else
                    {
                        return((int)ExitCode.UnknownError);
                    }
                    AddCOMDelay(options);
                }
                else
                {
                    PrintDocument printFunc = delegate(string destination, string printer)
                    {
                        workbook.PrintOutEx(ActivePrinter: printer, PrintToFile: true, PrToFileName: destination);
                    };
                    if (HasTemplateOption(options))
                    {
                        // Set up the template page setup options on all the worksheets
                        // in the workbook
                        var worksheets = workbook.Worksheets;
                        for (int wsIdx = 1; wsIdx <= worksheets.Count; wsIdx++)
                        {
                            var ws  = worksheets[wsIdx];
                            var wps = (ws is _Worksheet) ? ((_Worksheet)ws).PageSetup : ((_Chart)ws).PageSetup;
                            SetPageSetupProperties(templatePageSetup, wps);
                            ReleaseCOMObject(wps);
                            ReleaseCOMObject(ws);
                        }
                        ReleaseCOMObject(worksheets);
                    }
                    if (String.IsNullOrEmpty((string)options["printer"]))
                    {
                        try
                        {
                            workbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF,
                                                         outputFile, quality, includeProps, false, Type.Missing, Type.Missing, false, Type.Missing);
                        }
                        catch (Exception)
                        {
                            if (!String.IsNullOrEmpty((string)options["fallback_printer"]))
                            {
                                PrintToGhostscript((string)options["fallback_printer"], outputFile, printFunc);
                            }
                            else
                            {
                                throw;
                            }
                        }
                    }
                    else
                    {
                        PrintToGhostscript((string)options["printer"], outputFile, printFunc);
                    }
                }

                ReleaseCOMObject(allSheets);
                ReleaseCOMObject(fmt);
                ReleaseCOMObject(quality);

                return((int)ExitCode.Success);
            }
            catch (COMException ce)
            {
                if ((uint)ce.ErrorCode == 0x800A03EC)
                {
                    return((int)ExitCode.EmptyWorksheet);
                }
                else
                {
                    Console.WriteLine(ce.Message);
                    return((int)ExitCode.UnknownError);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return((int)ExitCode.UnknownError);
            }
            finally
            {
                if (workbook != null)
                {
                    ReleaseCOMObject(activeSheet);
                    ReleaseCOMObject(activeWindow);
                    ReleaseCOMObject(wbWin);
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    // Excel sometimes needs a bit of a delay before we close in order to
                    // let things get cleaned up
                    workbook.Saved = true;
                    CloseExcelWorkbook(workbook);
                }

                if (!running)
                {
                    if (workbooks != null)
                    {
                        workbooks.Close();
                    }

                    if (app != null)
                    {
                        ((Microsoft.Office.Interop.Excel._Application)app).Quit();
                    }
                }

                // Clean all the COM leftovers
                ReleaseCOMObject(workbook);
                ReleaseCOMObject(workbooks);
                ReleaseCOMObject(app);
                GC.Collect();
                GC.WaitForPendingFinalizers();

                if (tmpFile != null && File.Exists(tmpFile))
                {
                    System.IO.File.Delete(tmpFile);
                    // Remove the temporary path to the temp file
                    Directory.Delete(Path.GetDirectoryName(tmpFile));
                }
            }
        }
Example #8
0
        public static void ExportTable3(string saveFileName, List <sp_SelectTable3ForExcel_Result> dataRows, string datetime, string dsn, string company, List <MessageInfo> messages)
        {
            try
            {
                string fileName;
                fileName = AppDomain.CurrentDomain.BaseDirectory + "Excel\\Table33.xlsx";

                EX.Application app = new Microsoft.Office.Interop.Excel.Application();
                app.Visible = true;
                EX.Workbook  book  = app.Workbooks.Open(fileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                EX.Worksheet sheet = (EX.Worksheet)book.Worksheets[1];

                sheet.Cells[1, "A"] = datetime;

                //string[] dsnArray = dsn.Split('-');
                //if (dsnArray.Length<3)
                //{
                //    Log.WriteLog.WriteOperateLog("导出失败,DSN为:" + dsn);
                //    MessageBox.Show("导出失败,DSN为:" + dsn);
                //    return;
                //}
                //sheet.Cells[1, "E"] = company + ("-") + dsnArray[1] + ("-") + dsnArray[2];
                sheet.Cells[1, "E"] = dsn;
                sheet.Cells[1, "H"] = company;
                //sheet.Cells[1, "I"] = MainContext.UserCompanyName;

                int row = 3;
                foreach (var dataRow in dataRows)
                {
                    row++;
                    sheet.Cells[row, "A"] = row - 3;
                    sheet.Cells[row, "B"] = dataRow.Name;
                    sheet.Cells[row, "C"] = dataRow.BirthDay;
                    sheet.Cells[row, "D"] = dataRow.Sex;
                    sheet.Cells[row, "E"] = dataRow.FBirthNationlityPresentEn;
                    sheet.Cells[row, "F"] = dataRow.FBirthNationlityEn;
                    sheet.Cells[row, "G"] = "'" + dataRow.PID;
                    //sheet.Cells[row, "G"] = dataRow.Work;
                    sheet.Cells[row, "H"] = ((DateTime)(dataRow.FPassportValidDate)).ToString("dd/MM/yyyy");
                    sheet.Cells[row, "I"] = dataRow.CQJDate;
                    sheet.Cells[row, "J"] = dataRow.TimesName;
                    sheet.Cells[row, "K"] = dataRow.FCreateCompany;
                    sheet.Cells[row, "L"] = dataRow.FSysMemo;

                    EX.Range range = sheet.Range[sheet.Cells[row, "A"], sheet.Cells[row, "L"]];

                    switch (dataRow.iType)
                    {
                    case 1:
                        break;

                    case 2:
                        range.Font.ColorIndex = 10;    //绿色
                        break;

                    case 3:
                        range.Font.ColorIndex = 5;    // 蓝色
                        break;

                    case 4:
                        range.Font.ColorIndex = 3;    // 红色
                        break;

                    case 5:
                        range.Font.ColorIndex = 10;    //绿色
                        break;

                    case 6:
                    case 7:
                        range.Font.ColorIndex = 5;
                        break;

                    case 8:
                        range.Font.ColorIndex = 3;
                        break;

                    case 9:
                        range.Font.ColorIndex = 45;    //橙色
                        break;

                    case 10:
                        range.Font.ColorIndex = 5;
                        break;

                    case 11:
                        range.Font.ColorIndex = 26;    //粉红色
                        break;

                    case 12:
                        range.Font.ColorIndex = 10;    //绿色
                        break;

                    case 13:
                        range.Font.ColorIndex = 26;
                        break;

                    case 14:
                        range.Font.ColorIndex = 5;
                        break;

                    case 15:
                        range.Font.ColorIndex = 3;
                        break;

                    case 16:
                        range.Font.ColorIndex = 16;
                        break;

                    case 17:
                        range.Font.ColorIndex = 5;
                        break;

                    case 18:
                        range.Font.ColorIndex = 3;
                        break;

                    case 19:
                        range.Font.ColorIndex = 5;
                        break;

                    case 20:
                        range.Font.ColorIndex = 3;
                        break;

                    case 21:
                    case 22:
                    case 23:
                    case 24:
                    case 27:
                    case 28:
                    case 29:
                    case 30:
                    case 31:
                    case 32:
                        range.Font.ColorIndex = 16;
                        break;

                    case 25:
                    case 26:
                        break;

                    default:
                        break;
                    }
                }

                EX.Range range22 = sheet.Range[sheet.Cells[2, "A"], sheet.Cells[row, "L"]];

                NewMethod(range22, Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft);
                NewMethod(range22, Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop);
                NewMethod(range22, Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom);
                NewMethod(range22, Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight);
                NewMethod(range22, Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical);
                NewMethod(range22, Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideHorizontal);

                foreach (MessageInfo info in messages)
                {
                    row++;
                    EX.Range range = sheet.Range[sheet.Cells[row, "B"], sheet.Cells[row, "I"]];
                    range.Merge(Missing.Value);
                    sheet.Cells[row, "B"] = info.message;

                    switch (info.iType)
                    {
                    case 1:
                        break;

                    case 2:
                        range.Font.ColorIndex = 10;    //绿色
                        break;

                    case 3:
                        range.Font.ColorIndex = 5;    // 蓝色
                        break;

                    case 4:
                        range.Font.ColorIndex = 3;    // 红色
                        break;

                    case 5:
                        range.Font.ColorIndex = 10;    //绿色
                        break;

                    case 6:
                    case 7:
                        range.Font.ColorIndex = 5;
                        break;

                    case 8:
                        range.Font.ColorIndex = 3;
                        break;

                    case 9:
                        range.Font.ColorIndex = 45;    //橙色
                        break;

                    case 10:
                        range.Font.ColorIndex = 5;
                        break;

                    case 11:
                        range.Font.ColorIndex = 26;    //粉红色
                        break;

                    case 12:
                        range.Font.ColorIndex = 10;    //绿色
                        break;

                    case 13:
                        range.Font.ColorIndex = 26;
                        break;

                    case 14:
                        range.Font.ColorIndex = 5;
                        break;

                    case 15:
                        range.Font.ColorIndex = 3;
                        break;

                    case 16:
                        range.Font.ColorIndex = 16;
                        break;

                    case 17:
                        range.Font.ColorIndex = 5;
                        break;

                    case 18:
                        range.Font.ColorIndex = 3;
                        break;

                    case 19:
                        range.Font.ColorIndex = 5;
                        break;

                    case 20:
                        range.Font.ColorIndex = 3;
                        break;

                    case 21:
                    case 22:
                    case 23:
                    case 24:
                    case 27:
                    case 28:
                    case 29:
                    case 30:
                    case 31:
                    case 32:
                        range.Font.ColorIndex = 16;
                        break;

                    case 25:
                    case 26:
                        break;

                    default:
                        break;
                    }
                }

                book.SaveAs(saveFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                //book.PrintPreview();
                book.PrintOutEx();
                book.Close(Missing.Value, Missing.Value, Missing.Value);

                IntPtr t  = new IntPtr(app.Hwnd);
                int    id = 0;
                GetWindowThreadProcessId(t, out id);
                System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(id);
                p.Kill();
                MessageBox.Show("导出成功,生成的文件位置为:" + saveFileName);
            }
            catch (System.Exception ex)
            {
                Log.WriteLog.WriteErorrLog(ex);
                MessageBox.Show(ex.ToString());
            }
        }
Example #9
0
        ///----------------------------------------------------------------------
        /// <summary>
        ///     FAX注文書印刷処理 </summary>
        /// <param name="prnName">
        ///     プリンタ名</param>
        /// <param name="copies">
        ///     印刷部数</param>
        /// <param name="ptof">
        ///     ファイルに出力</param>
        ///----------------------------------------------------------------------
        private void prnSheet(string prnName, int copies, bool ptof)
        {
            //マウスポインタを待機にする
            this.Cursor = Cursors.WaitCursor;

            // Excel起動
            string sAppPath = System.AppDomain.CurrentDomain.BaseDirectory;

            Excel.Application oXls = new Excel.Application();

            Excel.Workbook oXlsBook = (Excel.Workbook)(oXls.Workbooks.Open(Properties.Settings.Default.xlsFaxPattern, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                           Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                           Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                           Type.Missing, Type.Missing));

            Excel.Worksheet oxlsSheet   = (Excel.Worksheet)oXlsBook.Sheets[1];
            Excel.Worksheet oxlsMsSheet = (Excel.Worksheet)oXlsBook.Sheets[1]; // テンプレートシート
            oxlsSheet.Select(Type.Missing);

            Excel.Range rng = null;

            int pCnt = 1;   // ページカウント

            //int bCount = 0; // progressBar部署カウント
            object[,] rtnArray = null;

            try
            {
                //// progressBar
                //toolStripProgressBar1.Maximum = 100;
                //toolStripProgressBar1.Minimum = 0;
                //toolStripProgressBar1.Visible = true;

                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    // チェックされている部署を対象とする
                    if (dataGridView1[colChk, i].Value.ToString() == "False")
                    {
                        continue;
                    }

                    // テンプレートシートを追加する
                    pCnt++;
                    oxlsMsSheet.Copy(Type.Missing, oXlsBook.Sheets[pCnt - 1]);
                    oxlsSheet = (Excel.Worksheet)oXlsBook.Sheets[pCnt];

                    // シートのセルを一括して配列に取得します
                    rng      = oxlsMsSheet.Range[oxlsMsSheet.Cells[1, 1], oxlsMsSheet.Cells[oxlsMsSheet.UsedRange.Rows.Count, oxlsMsSheet.UsedRange.Columns.Count]];
                    rtnArray = (object[, ])rng.Value2;

                    // パターンID
                    string pPID = dataGridView1[colPtnID, i].Value.ToString().PadLeft(4, '0');
                    rtnArray[4, 32] = pPID.Substring(0, 1);
                    rtnArray[4, 38] = pPID.Substring(1, 1);
                    rtnArray[4, 44] = pPID.Substring(2, 1);
                    rtnArray[4, 50] = pPID.Substring(3, 1);

                    // お客様コード(届先番号)
                    pPID             = dataGridView1[colNouCode, i].Value.ToString().PadLeft(6, '0');
                    rtnArray[4, 87]  = pPID.Substring(0, 1);
                    rtnArray[4, 93]  = pPID.Substring(1, 1);
                    rtnArray[4, 99]  = pPID.Substring(2, 1);
                    rtnArray[4, 105] = pPID.Substring(3, 1);
                    rtnArray[4, 111] = pPID.Substring(4, 1);
                    rtnArray[4, 117] = pPID.Substring(5, 1);

                    // お客様名
                    rtnArray[8, 29] = Utility.NulltoStr(dataGridView1[colNouName, i].Value);

                    var s = dts.パターンID.Single(a => a.ID == Utility.StrtoInt(dataGridView1[colID, i].Value.ToString()));

                    // 商品名
                    string sIrisu = string.Empty;
                    string sTani  = string.Empty;

                    rtnArray[16, 2]  = getVSyohin(s.商品1, out sIrisu, out sTani);
                    rtnArray[17, 44] = sIrisu;
                    rtnArray[16, 73] = sTani;
                    if (s.商品1 != global.flgOff)
                    {
                        rtnArray[17, 2] = s.商品1.ToString("D8");
                    }

                    rtnArray[18, 2]  = getVSyohin(s.商品2, out sIrisu, out sTani);
                    rtnArray[19, 44] = sIrisu;
                    rtnArray[18, 73] = sTani;
                    if (s.商品2 != global.flgOff)
                    {
                        rtnArray[19, 2] = s.商品2.ToString("D8");
                    }

                    rtnArray[20, 2]  = getVSyohin(s.商品3, out sIrisu, out sTani);
                    rtnArray[21, 44] = sIrisu;
                    rtnArray[20, 73] = sTani;
                    if (s.商品3 != global.flgOff)
                    {
                        rtnArray[21, 2] = s.商品3.ToString("D8");
                    }

                    rtnArray[22, 2]  = getVSyohin(s.商品4, out sIrisu, out sTani);
                    rtnArray[23, 44] = sIrisu;
                    rtnArray[22, 73] = sTani;
                    if (s.商品4 != global.flgOff)
                    {
                        rtnArray[23, 2] = s.商品4.ToString("D8");
                    }

                    rtnArray[24, 2]  = getVSyohin(s.商品5, out sIrisu, out sTani);
                    rtnArray[25, 44] = sIrisu;
                    rtnArray[24, 73] = sTani;
                    if (s.商品5 != global.flgOff)
                    {
                        rtnArray[25, 2] = s.商品5.ToString("D8");
                    }

                    rtnArray[26, 2]  = getVSyohin(s.商品6, out sIrisu, out sTani);
                    rtnArray[27, 44] = sIrisu;
                    rtnArray[26, 73] = sTani;
                    if (s.商品6 != global.flgOff)
                    {
                        rtnArray[27, 2] = s.商品6.ToString("D8");
                    }

                    rtnArray[28, 2]  = getVSyohin(s.商品7, out sIrisu, out sTani);
                    rtnArray[29, 44] = sIrisu;
                    rtnArray[28, 73] = sTani;
                    if (s.商品7 != global.flgOff)
                    {
                        rtnArray[29, 2] = s.商品7.ToString("D8");
                    }

                    rtnArray[30, 2]  = getVSyohin(s.商品8, out sIrisu, out sTani);
                    rtnArray[31, 44] = sIrisu;
                    rtnArray[30, 73] = sTani;
                    if (s.商品8 != global.flgOff)
                    {
                        rtnArray[31, 2] = s.商品8.ToString("D8");
                    }

                    rtnArray[32, 2]  = getVSyohin(s.商品9, out sIrisu, out sTani);
                    rtnArray[33, 44] = sIrisu;
                    rtnArray[32, 73] = sTani;
                    if (s.商品9 != global.flgOff)
                    {
                        rtnArray[33, 2] = s.商品9.ToString("D8");
                    }

                    rtnArray[34, 2]  = getVSyohin(s.商品10, out sIrisu, out sTani);
                    rtnArray[35, 44] = sIrisu;
                    rtnArray[34, 73] = sTani;
                    if (s.商品10 != global.flgOff)
                    {
                        rtnArray[35, 2] = s.商品10.ToString("D8");
                    }

                    rtnArray[36, 2]  = getVSyohin(s.商品11, out sIrisu, out sTani);
                    rtnArray[37, 44] = sIrisu;
                    rtnArray[36, 73] = sTani;
                    if (s.商品11 != global.flgOff)
                    {
                        rtnArray[37, 2] = s.商品11.ToString("D8");
                    }

                    rtnArray[38, 2]  = getVSyohin(s.商品12, out sIrisu, out sTani);
                    rtnArray[39, 44] = sIrisu;
                    rtnArray[38, 73] = sTani;
                    if (s.商品12 != global.flgOff)
                    {
                        rtnArray[39, 2] = s.商品12.ToString("D8");
                    }

                    rtnArray[40, 2]  = getVSyohin(s.商品13, out sIrisu, out sTani);
                    rtnArray[41, 44] = sIrisu;
                    rtnArray[40, 73] = sTani;
                    if (s.商品13 != global.flgOff)
                    {
                        rtnArray[41, 2] = s.商品13.ToString("D8");
                    }

                    rtnArray[42, 2]  = getVSyohin(s.商品14, out sIrisu, out sTani);
                    rtnArray[43, 44] = sIrisu;
                    rtnArray[42, 73] = sTani;
                    if (s.商品14 != global.flgOff)
                    {
                        rtnArray[43, 2] = s.商品14.ToString("D8");
                    }

                    rtnArray[44, 2]  = getVSyohin(s.商品15, out sIrisu, out sTani);
                    rtnArray[45, 44] = sIrisu;
                    rtnArray[44, 73] = sTani;
                    if (s.商品15 != global.flgOff)
                    {
                        rtnArray[45, 2] = s.商品15.ToString("D8");
                    }

                    rtnArray[16, 77]  = getVSyohin(s.商品16, out sIrisu, out sTani);
                    rtnArray[17, 119] = sIrisu;
                    rtnArray[16, 148] = sTani;
                    if (s.商品16 != global.flgOff)
                    {
                        rtnArray[17, 77] = s.商品16.ToString("D8");
                    }

                    rtnArray[18, 77]  = getVSyohin(s.商品17, out sIrisu, out sTani);
                    rtnArray[19, 119] = sIrisu;
                    rtnArray[18, 148] = sTani;
                    if (s.商品17 != global.flgOff)
                    {
                        rtnArray[19, 77] = s.商品17.ToString("D8");
                    }

                    rtnArray[20, 77]  = getVSyohin(s.商品18, out sIrisu, out sTani);
                    rtnArray[21, 119] = sIrisu;
                    rtnArray[20, 148] = sTani;
                    if (s.商品18 != global.flgOff)
                    {
                        rtnArray[21, 77] = s.商品18.ToString("D8");
                    }

                    rtnArray[22, 77]  = getVSyohin(s.商品19, out sIrisu, out sTani);
                    rtnArray[23, 119] = sIrisu;
                    rtnArray[22, 148] = sTani;
                    if (s.商品19 != global.flgOff)
                    {
                        rtnArray[23, 77] = s.商品19.ToString("D8");
                    }

                    rtnArray[24, 77]  = getVSyohin(s.商品20, out sIrisu, out sTani);
                    rtnArray[25, 119] = sIrisu;
                    rtnArray[24, 148] = sTani;
                    if (s.商品20 != global.flgOff)
                    {
                        rtnArray[25, 77] = s.商品20.ToString("D8");
                    }

                    rtnArray[26, 77]  = getVSyohin(s.商品21, out sIrisu, out sTani);
                    rtnArray[27, 119] = sIrisu;
                    rtnArray[26, 148] = sTani;
                    if (s.商品21 != global.flgOff)
                    {
                        rtnArray[27, 77] = s.商品21.ToString("D8");
                    }

                    rtnArray[28, 77]  = getVSyohin(s.商品22, out sIrisu, out sTani);
                    rtnArray[29, 119] = sIrisu;
                    rtnArray[28, 148] = sTani;
                    if (s.商品22 != global.flgOff)
                    {
                        rtnArray[29, 77] = s.商品22.ToString("D8");
                    }

                    rtnArray[30, 77]  = getVSyohin(s.商品23, out sIrisu, out sTani);
                    rtnArray[31, 119] = sIrisu;
                    rtnArray[30, 148] = sTani;
                    if (s.商品23 != global.flgOff)
                    {
                        rtnArray[31, 77] = s.商品23.ToString("D8");
                    }

                    rtnArray[32, 77]  = getVSyohin(s.商品24, out sIrisu, out sTani);
                    rtnArray[33, 119] = sIrisu;
                    rtnArray[32, 148] = sTani;
                    if (s.商品24 != global.flgOff)
                    {
                        rtnArray[33, 77] = s.商品24.ToString("D8");
                    }

                    rtnArray[34, 77]  = getVSyohin(s.商品25, out sIrisu, out sTani);
                    rtnArray[35, 119] = sIrisu;
                    rtnArray[34, 148] = sTani;
                    if (s.商品25 != global.flgOff)
                    {
                        rtnArray[35, 77] = s.商品25.ToString("D8");
                    }

                    rtnArray[36, 77]  = getVSyohin(s.商品26, out sIrisu, out sTani);
                    rtnArray[37, 119] = sIrisu;
                    rtnArray[36, 148] = sTani;
                    if (s.商品26 != global.flgOff)
                    {
                        rtnArray[37, 77] = s.商品26.ToString("D8");
                    }

                    rtnArray[38, 77]  = getVSyohin(s.商品27, out sIrisu, out sTani);
                    rtnArray[39, 119] = sIrisu;
                    rtnArray[38, 148] = sTani;
                    if (s.商品27 != global.flgOff)
                    {
                        rtnArray[39, 77] = s.商品27.ToString("D8");
                    }

                    rtnArray[40, 77]  = getVSyohin(s.商品28, out sIrisu, out sTani);
                    rtnArray[41, 119] = sIrisu;
                    rtnArray[40, 148] = sTani;
                    if (s.商品28 != global.flgOff)
                    {
                        rtnArray[41, 77] = s.商品28.ToString("D8");
                    }

                    rtnArray[42, 77]  = getVSyohin(s.商品29, out sIrisu, out sTani);
                    rtnArray[43, 119] = sIrisu;
                    rtnArray[42, 148] = sTani;
                    if (s.商品29 != global.flgOff)
                    {
                        rtnArray[43, 77] = s.商品29.ToString("D8");
                    }

                    rtnArray[44, 77]  = getVSyohin(s.商品30, out sIrisu, out sTani);
                    rtnArray[45, 119] = sIrisu;
                    rtnArray[44, 148] = sTani;
                    if (s.商品30 != global.flgOff)
                    {
                        rtnArray[45, 77] = s.商品30.ToString("D8");
                    }

                    // 備考
                    rtnArray[62, 2] = s.備考;

                    // 配列からシートセルに一括してデータをセットします
                    rng        = oxlsSheet.Range[oxlsSheet.Cells[1, 1], oxlsSheet.Cells[oxlsSheet.UsedRange.Rows.Count, oxlsSheet.UsedRange.Columns.Count]];
                    rng.Value2 = rtnArray;
                }

                // 確認のためExcelのウィンドウを表示する
                oXls.Visible = true;

                // 1枚目はテンプレートシートなので印刷時には削除する
                oXls.DisplayAlerts = false;
                oXlsBook.Sheets[1].Delete();

                //System.Threading.Thread.Sleep(1000);

                // 印刷
                oXlsBook.PrintOutEx(Type.Missing, Type.Missing, copies, true, prnName, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

                //if (ptof)
                //{
                //    if (copies > 1)
                //    {
                //        int iX = 1;
                //        while (iX <= copies)
                //        {
                //            oXlsBook.PrintOutEx(Type.Missing, Type.Missing, Type.Missing, true, prnName, ptof, Type.Missing, Type.Missing, Type.Missing);
                //            iX++;
                //        }
                //    }
                //    else
                //    {
                //        oXlsBook.PrintOutEx(Type.Missing, Type.Missing, copies, true, prnName, ptof, Type.Missing, Type.Missing, Type.Missing);
                //    }
                //}
                //else
                //{
                //    oXlsBook.PrintOutEx(Type.Missing, Type.Missing, copies, true, prnName, ptof, Type.Missing, Type.Missing, Type.Missing);
                //}

                // 確認のためExcelのウィンドウを非表示にする
                oXls.Visible = false;

                // 終了メッセージ
                MessageBox.Show("終了しました");
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "印刷処理", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

            finally
            {
                // ウィンドウを非表示にする
                oXls.Visible = false;

                // 保存処理
                oXls.DisplayAlerts = false;

                // Bookをクローズ
                oXlsBook.Close(Type.Missing, Type.Missing, Type.Missing);

                // Excelを終了
                oXls.Quit();

                // COM オブジェクトの参照カウントを解放する
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsMsSheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsSheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oXlsBook);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oXls);

                oXls        = null;
                oXlsBook    = null;
                oxlsSheet   = null;
                oxlsMsSheet = null;

                GC.Collect();

                //マウスポインタを元に戻す
                this.Cursor = Cursors.Default;
            }
        }
Example #10
0
        ///----------------------------------------------------------------------
        /// <summary>
        ///     FAX注文書印刷処理 </summary>
        /// <param name="prnName">
        ///     プリンタ名</param>
        /// <param name="copies">
        ///     印刷部数</param>
        /// <param name="ptof">
        ///     ファイルに出力</param>
        ///----------------------------------------------------------------------
        private void prnSheet(string prnName, int copies, bool ptof)
        {
            //マウスポインタを待機にする
            this.Cursor = Cursors.WaitCursor;

            // Excel起動
            string sAppPath = System.AppDomain.CurrentDomain.BaseDirectory;

            Excel.Application oXls = new Excel.Application();

            Excel.Workbook oXlsBook = (Excel.Workbook)(oXls.Workbooks.Open(Properties.Settings.Default.FAX注文書, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                           Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                           Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                           Type.Missing, Type.Missing));

            Excel.Worksheet oxlsSheet   = (Excel.Worksheet)oXlsBook.Sheets[1];
            Excel.Worksheet oxlsMsSheet = (Excel.Worksheet)oXlsBook.Sheets[1]; // テンプレートシート
            oxlsSheet.Select(Type.Missing);

            Excel.Range rng        = null;
            Excel.Range rngFormura = null;

            int pCnt = 1;   // ページカウント

            object[,] rtnArray = null;

            try
            {
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    // チェックされている行を対象とする
                    if (dataGridView1[colChk, i].Value.ToString() == "False")
                    {
                        continue;
                    }

                    // テンプレートシートを追加する
                    pCnt++;
                    oxlsMsSheet.Copy(Type.Missing, oXlsBook.Sheets[pCnt - 1]);
                    oxlsSheet = (Excel.Worksheet)oXlsBook.Sheets[pCnt];

                    // シートのセルを一括して配列に取得します
                    rng = oxlsMsSheet.Range[oxlsMsSheet.Cells[1, 1], oxlsMsSheet.Cells[oxlsMsSheet.UsedRange.Rows.Count, oxlsMsSheet.UsedRange.Columns.Count]];
                    //rng.Value2 = "";
                    //rtnArray = (object[,])rng.Value2;
                    rtnArray = rng.Value2;
                    rtnArray = rng.Formula;

                    // 年月
                    rtnArray[1, 1]  = txtYear.Text.Substring(0, 1);
                    rtnArray[1, 7]  = txtYear.Text.Substring(1, 1);
                    rtnArray[1, 13] = txtYear.Text.Substring(2, 1);
                    rtnArray[1, 19] = txtYear.Text.Substring(3, 1);

                    rtnArray[1, 31] = txtMonth.Text.PadLeft(2, '0').Substring(0, 1);
                    rtnArray[1, 37] = txtMonth.Text.PadLeft(2, '0').Substring(1, 1);

                    // パターンID
                    string pPID = dataGridView1[colPtnID, i].Value.ToString().PadLeft(3, '0');
                    rtnArray[1, 79] = pPID.Substring(0, 1);
                    rtnArray[1, 85] = pPID.Substring(1, 1);
                    rtnArray[1, 91] = pPID.Substring(2, 1);

                    // 枝番
                    pPID             = dataGridView1[colSecoundNum, i].Value.ToString().PadLeft(2, '0');
                    rtnArray[3, 121] = pPID.Substring(0, 1);
                    rtnArray[3, 127] = pPID.Substring(1, 1);

                    // 得意先コード
                    pPID             = dataGridView1[colNouCode, i].Value.ToString().PadLeft(7, '0');
                    rtnArray[1, 121] = pPID.Substring(0, 1);
                    rtnArray[1, 127] = pPID.Substring(1, 1);
                    rtnArray[1, 133] = pPID.Substring(2, 1);
                    rtnArray[1, 139] = pPID.Substring(3, 1);
                    rtnArray[1, 145] = pPID.Substring(4, 1);
                    rtnArray[1, 151] = pPID.Substring(5, 1);
                    rtnArray[1, 157] = pPID.Substring(6, 1);

                    // 得意先名
                    rtnArray[3, 31] = Utility.NulltoStr(dataGridView1[colNouName, i].Value);

                    //// 更新日:2018/11/01
                    //DateTime uDt;
                    //if (DateTime.TryParse(dataGridView1[colDate, i].Value.ToString(), out uDt))
                    //{
                    //    rtnArray[15, 2] = uDt.ToShortDateString() + " 更新";
                    //}
                    //else
                    //{
                    //    rtnArray[15, 2] = string.Empty;
                    //}


                    ClsOrderPattern = dbPtn.Single(a => a.ID == Utility.StrtoInt(dataGridView1[colID, i].Value.ToString()));

                    // コメント1:2020/04/01
                    if (Utility.NulltoStr(ClsOrderPattern.comment1) != string.Empty)
                    {
                        rtnArray[5, 1] = Utility.NulltoStr(ClsOrderPattern.comment1);
                    }

                    // 会社名:2020/04/01
                    if (Utility.NulltoStr(ClsOrderPattern.comment2) != string.Empty)
                    {
                        rtnArray[3, 133] = Utility.NulltoStr(ClsOrderPattern.comment2);
                    }

                    // 担当者:2020/04/01
                    if (Utility.NulltoStr(ClsOrderPattern.comment3) != string.Empty)
                    {
                        rtnArray[4, 133] = Utility.NulltoStr(ClsOrderPattern.comment3);
                    }

                    // FAX:2020/04/01
                    if (Utility.NulltoStr(ClsOrderPattern.comment4) != string.Empty)
                    {
                        rtnArray[5, 133] = Utility.NulltoStr(ClsOrderPattern.comment4);
                    }

                    string sIrisu = string.Empty;
                    string sTani  = string.Empty;

                    string _G_Code = "";
                    int    _R_Days = 0;
                    int    xR      = 9;

                    for (int r = 0; r < global.MAX_GYO; r++)
                    {
                        switch (r)
                        {
                        case 0:
                            _G_Code = ClsOrderPattern.G_Code1;
                            _R_Days = ClsOrderPattern.G_Read1;
                            break;

                        case 1:
                            _G_Code = ClsOrderPattern.G_Code2;
                            _R_Days = ClsOrderPattern.G_Read2;
                            break;

                        case 2:
                            _G_Code = ClsOrderPattern.G_Code3;
                            _R_Days = ClsOrderPattern.G_Read3;
                            break;

                        case 3:
                            _G_Code = ClsOrderPattern.G_Code4;
                            _R_Days = ClsOrderPattern.G_Read4;
                            break;

                        case 4:
                            _G_Code = ClsOrderPattern.G_Code5;
                            _R_Days = ClsOrderPattern.G_Read5;
                            break;

                        case 5:
                            _G_Code = ClsOrderPattern.G_Code6;
                            _R_Days = ClsOrderPattern.G_Read6;
                            break;

                        case 6:
                            _G_Code = ClsOrderPattern.G_Code7;
                            _R_Days = ClsOrderPattern.G_Read7;
                            break;

                        case 7:
                            _G_Code = ClsOrderPattern.G_Code8;
                            _R_Days = ClsOrderPattern.G_Read8;
                            break;

                        case 8:
                            _G_Code = ClsOrderPattern.G_Code9;
                            _R_Days = ClsOrderPattern.G_Read9;
                            break;

                        case 9:
                            _G_Code = ClsOrderPattern.G_Code10;
                            _R_Days = ClsOrderPattern.G_Read10;
                            break;

                        case 10:
                            _G_Code = ClsOrderPattern.G_Code11;
                            _R_Days = ClsOrderPattern.G_Read11;
                            break;

                        case 11:
                            _G_Code = ClsOrderPattern.G_Code12;
                            _R_Days = ClsOrderPattern.G_Read12;
                            break;

                        case 12:
                            _G_Code = ClsOrderPattern.G_Code13;
                            _R_Days = ClsOrderPattern.G_Read13;
                            break;

                        case 13:
                            _G_Code = ClsOrderPattern.G_Code14;
                            _R_Days = ClsOrderPattern.G_Read14;
                            break;

                        case 14:
                            _G_Code = ClsOrderPattern.G_Code15;
                            _R_Days = ClsOrderPattern.G_Read15;
                            break;

                        default:
                            break;
                        }

                        // 2020/04/08 コメント化
                        //csvSyohin = Utility.GetSyohinData(SyoArray, SySzArray, ShiireArray, _G_Code);

                        // 商品情報取得 2020/04/09
                        csvSyohin = Utility.GetSyohinsFromDataTable(global.dtSyohin, _G_Code);

                        int xRow  = r * 2 + xR;
                        int xRow2 = r * 2 + xR + 1;

                        if (csvSyohin.SYOHIN_CD == "")
                        {
                            rtnArray[xRow, 1]   = string.Empty;
                            rtnArray[xRow2, 1]  = string.Empty;
                            rtnArray[xRow, 23]  = string.Empty;
                            rtnArray[xRow, 44]  = string.Empty;
                            rtnArray[xRow, 48]  = string.Empty;
                            rtnArray[xRow2, 48] = string.Empty;
                            rtnArray[xRow, 60]  = string.Empty;
                            rtnArray[xRow, 74]  = string.Empty;
                            rtnArray[xRow2, 60] = string.Empty;
                        }
                        else
                        {
                            rtnArray[xRow, 1]   = csvSyohin.SIRESAKI_NM;
                            rtnArray[xRow2, 1]  = csvSyohin.SYOHIN_NM;
                            rtnArray[xRow, 23]  = csvSyohin.SYOHIN_KIKAKU;
                            rtnArray[xRow, 44]  = csvSyohin.CASE_IRISU;
                            rtnArray[xRow, 48]  = csvSyohin.SYOHIN_CD.PadLeft(8, '0');
                            rtnArray[xRow2, 48] = _R_Days + "日前";

                            // 納価売価取得:2020/04/10
                            ClsCsvData.ClsCsvNoukaBaika noukaBaika = Utility.GetNoukaBaikaFromDataTable(pPID, csvSyohin.SYOHIN_CD.PadLeft(8, '0'), global.dtNoukaBaika);

                            //rtnArray[xRow, 60] = noukaBaika.NOUKA;  // 2020/04/10
                            //rtnArray[xRow, 74] = noukaBaika.BAIKA;  // 2020/04/10

                            rtnArray[xRow, 60] = String.Format("{0:0.##}", noukaBaika.NOUKA);  // 2020/08/05 小数点以下対応
                            rtnArray[xRow, 74] = String.Format("{0:0.##}", noukaBaika.BAIKA);  // 2020/08/05 小数点以下対応

                            rtnArray[xRow2, 60] = csvSyohin.JAN_CD;
                        }
                    }

                    // 備考
                    //rtnArray[62, 2] = s.備考;

                    // 配列からシートセルに一括してデータをセットします
                    rng        = oxlsSheet.Range[oxlsSheet.Cells[1, 1], oxlsSheet.Cells[oxlsSheet.UsedRange.Rows.Count, oxlsSheet.UsedRange.Columns.Count]];
                    rng.Value2 = rtnArray;
                }

                // 確認のためExcelのウィンドウを表示する
                oXls.Visible = true;

                // 1枚目はテンプレートシートなので印刷時には削除する
                oXls.DisplayAlerts = false;
                oXlsBook.Sheets[1].Delete();

                // 印刷:2020/04/14
                if (radioButton1.Checked)
                {
                    // 印刷
                    oXlsBook.PrintOutEx(Type.Missing, Type.Missing, copies, true, prnName, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                }

                // 確認のためExcelのウィンドウを非表示にする
                oXls.Visible = false;

                // Excel出力:2020/04/14
                if (radioButton2.Checked)
                {
                    //ダイアログボックスの初期設定
                    DialogResult   ret;
                    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                    saveFileDialog1.Title            = "FAX発注書";
                    saveFileDialog1.OverwritePrompt  = true;
                    saveFileDialog1.RestoreDirectory = true;
                    saveFileDialog1.FileName         = "FAX発注書";
                    saveFileDialog1.Filter           = "Microsoft Office Excelファイル(*.xlsx)|*.xlsx|全てのファイル(*.*)|*.*";

                    //ダイアログボックスを表示し「保存」ボタンが選択されたらファイル名を表示
                    string fileName;
                    ret = saveFileDialog1.ShowDialog();

                    if (ret == System.Windows.Forms.DialogResult.OK)
                    {
                        fileName = saveFileDialog1.FileName;
                        oXlsBook.SaveAs(fileName, Type.Missing, Type.Missing,
                                        Type.Missing, Type.Missing, Type.Missing,
                                        Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing,
                                        Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                    }
                }

                // 終了メッセージ
                MessageBox.Show("終了しました");
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "出力処理", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

            finally
            {
                // ウィンドウを非表示にする
                oXls.Visible = false;

                // 保存処理
                oXls.DisplayAlerts = false;

                // Bookをクローズ
                oXlsBook.Close(Type.Missing, Type.Missing, Type.Missing);

                // Excelを終了
                oXls.Quit();

                // COM オブジェクトの参照カウントを解放する
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsMsSheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsSheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oXlsBook);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oXls);

                oXls        = null;
                oXlsBook    = null;
                oxlsSheet   = null;
                oxlsMsSheet = null;

                GC.Collect();

                //マウスポインタを元に戻す
                this.Cursor = Cursors.Default;
            }
        }
Example #11
0
        /// ---------------------------------------------------------
        /// <summary>
        ///     請求書発行 </summary>
        /// ---------------------------------------------------------
        private void seikyuRep()
        {
            int _Pages   = 0;
            int _Rows    = 0;
            int sIr      = 26;
            int _RowsPrn = 21;

            decimal _nebikigo = 0;      // 売上金額 - 値引額
            decimal _tax      = 0;      // 消費税
            decimal _seikyu   = 0;      // 請求金額

            bool openStatus = true;

            string seikyuNum = string.Empty;    // 請求書番号
            string corp      = string.Empty;    // 請求先

            try
            {
                //マウスポインタを待機にする
                this.Cursor = Cursors.WaitCursor;

                string sAppPath = System.AppDomain.CurrentDomain.BaseDirectory;

                Excel.Application oXls = new Excel.Application();

                // 請求書テンプレートBOOK
                Excel.Workbook oXlsBook = (Excel.Workbook)(oXls.Workbooks.Open(sAppPath + Properties.Settings.Default.エクセル請求書, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                               Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                               Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                               Type.Missing, Type.Missing));

                // 印刷用BOOK
                Excel.Workbook oXlsBookPrn = (Excel.Workbook)(oXls.Workbooks.Open(sAppPath + Properties.Settings.Default.エクセル受注確定書印刷, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                                  Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                                  Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                                  Type.Missing, Type.Missing));

                // 請求書テンプレートシート
                Excel.Worksheet oxlsSheet = (Excel.Worksheet)oXlsBook.Sheets[1];

                // 請求書印刷シート
                Excel.Worksheet oxlsSheetPrn = null;

                Excel.Range[] rng = new Microsoft.Office.Interop.Excel.Range[2];

                try
                {
                    for (int i = 0; i < dataGridView1.RowCount; i++)
                    {
                        // チェック行
                        if (dataGridView1[colSel, i].Value.ToString() == "True")
                        {
                            int iX = 0;

                            // 受注データ取得
                            foreach (var it in dts.新請求書.Where(a => a.ID == Utility.strToInt(dataGridView1[colID, i].Value.ToString())))
                            {
                                // 明細数
                                foreach (var t in it.Get受注1Rows().OrderBy(a => a.配布開始日))
                                {
                                    if (iX == 0 || _Rows >= _RowsPrn)
                                    {
                                        // ページ計印字
                                        if (!openStatus)
                                        {
                                            oxlsSheetPrn.Cells[47, 16] = _nebikigo.ToString();  // 小計
                                            oxlsSheetPrn.Cells[48, 16] = _tax.ToString();       // 消費税
                                            oxlsSheetPrn.Cells[49, 16] = _seikyu.ToString();    // 合計

                                            // 備考
                                            if (it.Is備考Null())
                                            {
                                                oxlsSheetPrn.Cells[47, 4] = string.Empty;
                                            }
                                            else
                                            {
                                                oxlsSheetPrn.Cells[47, 4] = it.備考;
                                            }

                                            // ページ計初期化
                                            _nebikigo = 0;
                                            _tax      = 0;
                                            _seikyu   = 0;
                                        }

                                        // ページ数加算
                                        iX++;
                                        _Pages = iX;

                                        // ページシートを追加する
                                        oxlsSheet.Copy(Type.Missing, oXlsBookPrn.Sheets[_Pages]);

                                        // 印刷用カレントシート
                                        oxlsSheetPrn = (Excel.Worksheet)oXlsBookPrn.Sheets[_Pages + 1];

                                        // 対象行をゼロにしページを初期化
                                        _Rows = 0;

                                        // 請求書№
                                        seikyuNum = t.請求書発行日.Year.ToString() + t.請求書発行日.Month.ToString().PadLeft(2, '0') + t.請求書ID.ToString().PadLeft(5, '0');
                                        oxlsSheetPrn.Cells[1, 16] = "№ " + seikyuNum;

                                        // 発行日
                                        oxlsSheetPrn.Cells[2, 15] = t.請求書発行日.ToShortDateString();

                                        //// ページ数
                                        //oxlsSheetPrn.Cells[3, 16] = "(" + iX.ToString() + "/" + it.明細数.ToString() + ")";

                                        corp = string.Empty;

                                        // 請求先住所
                                        if (it.得意先Row != null)
                                        {
                                            oxlsSheetPrn.Cells[2, 3] = "〒 " + it.得意先Row.請求先郵便番号;
                                            oxlsSheetPrn.Cells[3, 3] = it.得意先Row.請求先都道府県 + " " + it.得意先Row.請求先住所1;
                                            oxlsSheetPrn.Cells[4, 3] = it.得意先Row.請求先住所2;

                                            // 請求先名
                                            //if (it.得意先Row.Is請求先名称Null())
                                            //{
                                            //    corp = it.得意先Row.略称;
                                            //}
                                            //else
                                            //{
                                            //    corp = it.得意先Row.請求先名称;
                                            //}

                                            // 2019/02/21
                                            if (it.得意先Row.請求先名称 == null)
                                            {
                                                corp = it.得意先Row.略称;
                                            }
                                            else
                                            {
                                                corp = it.得意先Row.請求先名称;
                                            }

                                            // 2019/02/21 コメント化
                                            //// 部署・担当者名
                                            //string tn = (it.得意先Row.部署名 + " " + it.得意先Row.請求先担当者名).Trim();

                                            //if (tn != string.Empty)
                                            //{
                                            //    oxlsSheetPrn.Cells[8, 3] = tn + " 様";
                                            //    oxlsSheetPrn.Cells[6, 3] = corp;
                                            //}
                                            //else
                                            //{
                                            //    oxlsSheetPrn.Cells[8, 3] = string.Empty;
                                            //    oxlsSheetPrn.Cells[6, 3] = corp + " 御中";
                                            //}

                                            // 部署・担当者名(得意先@請求先部署名、得意先@請求先敬称を使用): 2019/02/21
                                            string tn = (it.得意先Row.請求先部署名 + " " + it.得意先Row.請求先担当者名).Trim();

                                            if (tn != string.Empty)
                                            {
                                                oxlsSheetPrn.Cells[8, 3] = tn + " " + it.得意先Row.請求先敬称;
                                                oxlsSheetPrn.Cells[6, 3] = corp;
                                            }
                                            else
                                            {
                                                oxlsSheetPrn.Cells[8, 3] = string.Empty;
                                                oxlsSheetPrn.Cells[6, 3] = corp + " " + it.得意先Row.請求先敬称;
                                            }
                                        }

                                        // 1ページ目
                                        if (_Pages == 1)
                                        {
                                            // 合計請求金額
                                            //oxlsSheetPrn.Cells[22, 5] = dataGridView1[colKingaku, i].Value.ToString().Trim().Replace(",", "");
                                            //oxlsSheetPrn.Cells[22, 5] = it.請求金額.ToString();
                                            oxlsSheetPrn.Cells[22, 5] = it.残金.ToString();   // 残金を請求金額とする 2015/10/20
                                        }
                                        else
                                        {
                                            // 合計請求金額
                                            oxlsSheetPrn.Cells[22, 5] = "********************";
                                        }

                                        // 支払期日
                                        oxlsSheetPrn.Cells[55, 4] = dataGridView1[colSDt, i].Value.ToString();

                                        // 開始ステータス
                                        openStatus = false;
                                    }

                                    // 明細内容
                                    //oxlsSheetPrn.Cells[sIr + _Rows, 1] = t.受注日.Month.ToString() + "." + t.受注日.Day.ToString().PadLeft(2, '0');    // 日付
                                    oxlsSheetPrn.Cells[sIr + _Rows, 1] = t.配布開始日.Month.ToString() + "." + (t.配布開始日.Day.ToString().PadLeft(2, '0'));    // 日付

                                    // 受注内容
                                    if (t.受注種別Row != null)
                                    {
                                        oxlsSheetPrn.Cells[sIr + _Rows, 3] = t.受注種別Row.称;
                                    }
                                    else
                                    {
                                        oxlsSheetPrn.Cells[sIr + _Rows, 3] = string.Empty;
                                    }

                                    // サイズ
                                    if (t.判型Row != null)
                                    {
                                        oxlsSheetPrn.Cells[sIr + _Rows, 5] = t.判型Row.称;
                                    }
                                    else
                                    {
                                        oxlsSheetPrn.Cells[sIr + _Rows, 5] = string.Empty;
                                    }

                                    // チラシ名
                                    oxlsSheetPrn.Cells[sIr + _Rows, 6] = t.チラシ名;

                                    // 配布形態
                                    if (t.配布形態Row != null)
                                    {
                                        oxlsSheetPrn.Cells[sIr + _Rows, 12] = t.配布形態Row.称;
                                    }
                                    else
                                    {
                                        oxlsSheetPrn.Cells[sIr + _Rows, 12] = string.Empty;
                                    }

                                    oxlsSheetPrn.Cells[sIr + _Rows, 14] = t.単価.ToString("n2");
                                    oxlsSheetPrn.Cells[sIr + _Rows, 15] = t.枚数.ToString();
                                    oxlsSheetPrn.Cells[sIr + _Rows, 16] = t.金額.ToString();

                                    // 行加算
                                    _Rows++;

                                    // 値引額があるとき値引行を印字します
                                    if (t.値引額 > 0)
                                    {
                                        // 明細内容
                                        oxlsSheetPrn.Cells[sIr + _Rows, 6]  = "値引";
                                        oxlsSheetPrn.Cells[sIr + _Rows, 14] = (t.値引額 * (-1)).ToString("#,0");
                                        oxlsSheetPrn.Cells[sIr + _Rows, 15] = "1";
                                        oxlsSheetPrn.Cells[sIr + _Rows, 16] = (t.値引額 * (-1)).ToString();

                                        // 行加算
                                        _Rows++;
                                    }

                                    // ページ計加算
                                    _nebikigo += (t.金額 - t.値引額);    // 小計
                                    _tax      += t.消費税;             // 消費税
                                    _seikyu   += t.売上金額;            // 合計
                                }

                                // 入金額 2015/10/20
                                foreach (var nt in it.Get新入金Rows().OrderBy(a => a.入金年月日))
                                {
                                    // 明細内容
                                    oxlsSheetPrn.Cells[sIr + _Rows, 1]  = nt.入金年月日.Month.ToString() + "." + (nt.入金年月日.Day.ToString().PadLeft(2, '0'));   // 日付
                                    oxlsSheetPrn.Cells[sIr + _Rows, 6]  = "入金 ";
                                    oxlsSheetPrn.Cells[sIr + _Rows, 14] = (nt.金額 * (-1)).ToString("#,0");
                                    oxlsSheetPrn.Cells[sIr + _Rows, 15] = "1";
                                    oxlsSheetPrn.Cells[sIr + _Rows, 16] = (nt.金額 * (-1)).ToString();

                                    // 行加算
                                    _Rows++;

                                    // ページ計加算
                                    //_nebikigo -= nt.金額;     // 小計
                                }


                                // ページ計印字
                                oxlsSheetPrn.Cells[47, 16] = _nebikigo.ToString();  // 小計
                                oxlsSheetPrn.Cells[48, 16] = _tax.ToString();       // 消費税
                                oxlsSheetPrn.Cells[49, 16] = _seikyu.ToString();    // 合計

                                // 備考
                                if (it.Is備考Null())
                                {
                                    oxlsSheetPrn.Cells[47, 4] = string.Empty;
                                }
                                else
                                {
                                    oxlsSheetPrn.Cells[47, 4] = it.備考;
                                }

                                // 営業担当 2015/11/18
                                if (it.得意先Row != null && it.得意先Row.社員Row != null)
                                {
                                    oxlsSheetPrn.Cells[57, 15] = it.得意先Row.社員Row.氏名;
                                }
                                else
                                {
                                    oxlsSheetPrn.Cells[57, 15] = string.Empty;
                                }
                            }
                        }
                    }

                    // 印刷用BOOKの1番目のシートは削除する
                    ((Excel.Worksheet)oXlsBookPrn.Sheets[1]).Delete();

                    //マウスポインタを元に戻す
                    this.Cursor = Cursors.Default;

                    // 確認のためExcelのウィンドウを表示する
                    //oXls.Visible = true;

                    // 印刷
                    oXlsBookPrn.PrintOutEx(1, Type.Missing, 1, false, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

                    // ウィンドウを非表示にする
                    oXls.Visible = false;

                    // 保存処理
                    oXls.DisplayAlerts = false;

                    DialogResult ret;

                    // ダイアログボックスの初期設定
                    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                    saveFileDialog1.Title            = "請求書発行";
                    saveFileDialog1.OverwritePrompt  = true;
                    saveFileDialog1.RestoreDirectory = true;
                    //saveFileDialog1.FileName = "請求書_" + corp + seikyuNum;
                    saveFileDialog1.FileName = "請求書";
                    saveFileDialog1.Filter   = "Microsoft Office Excelファイル(*.xlsx)|*.xlsx|全てのファイル(*.*)|*.*";

                    // ダイアログボックスを表示し「保存」ボタンが選択されたらファイル名を表示
                    string fileName;
                    ret = saveFileDialog1.ShowDialog();

                    if (ret == System.Windows.Forms.DialogResult.OK)
                    {
                        fileName = saveFileDialog1.FileName;
                        oXlsBookPrn.SaveAs(fileName, Type.Missing, Type.Missing,
                                           Type.Missing, Type.Missing, Type.Missing,
                                           Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing,
                                           Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                    }

                    // 処理終了メッセージ
                    MessageBox.Show("終了しました", "請求書発行", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    // 請求書発行フラグ更新
                    seikyuRepFlgUpdate();

                    // 請求書データ再表示
                    dataShow(0, 0);
                }

                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "請求書発行", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                    //Bookをクローズ
                    oXlsBook.Close(Type.Missing, Type.Missing, Type.Missing);

                    //Excelを終了
                    oXls.Quit();
                }

                finally
                {
                    // ウィンドウを非表示にする
                    oXls.Visible = false;

                    // 保存処理
                    oXls.DisplayAlerts = false;

                    // Bookをクローズ
                    oXlsBook.Close(Type.Missing, Type.Missing, Type.Missing);
                    oXlsBookPrn.Close(Type.Missing, Type.Missing, Type.Missing);

                    // Excelを終了
                    oXls.Quit();

                    // COM オブジェクトの参照カウントを解放する
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsSheet);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsSheetPrn);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oXlsBook);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oXlsBookPrn);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oXls);

                    //マウスポインタを元に戻す
                    this.Cursor = Cursors.Default;
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "請求書作成", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

            //マウスポインタを元に戻す
            this.Cursor = Cursors.Default;
        }
Example #12
0
        //打印整个workbook
        /// <summary>
        /// 打印整个workbook,使用默认pdf打印机转换为pdf
        /// </summary>
        /// <param name="fromExcelPath">源excel路径</param>
        /// <returns>成功或失败</returns>
        public bool ConvertExcelWorkbookPDF(string fromExcelPath)
        {
            bool flag = true;

            try
            {
                if (fromExcelPath.Length == 0)
                {
                    flag = false;
                    throw new Exception("需要转换的源文件路径不能为空。");
                }
                Microsoft.Office.Interop.Excel.ApplicationClass applicationClass = new Microsoft.Office.Interop.Excel.ApplicationClass();
                applicationClass.GetType();
                Workbooks workbooks = applicationClass.Workbooks;//.get_Workbooks();
                Type      type      = workbooks.GetType();
                object    obj       = fromExcelPath;
                object[]  objArray  = new object[] { obj, true, true };
                Microsoft.Office.Interop.Excel.Workbook workbook = (Microsoft.Office.Interop.Excel.Workbook)type.InvokeMember("Open", BindingFlags.InvokeMethod,
                                                                                                                              null, workbooks, objArray);

                workbook.GetType();
                object value = Missing.Value;

                //目标路径仅在打印失败时写入,成功时都默认在打印机路径下
                //故不使用目标路径,直接使用打印机默认路径
                workbook.PrintOutEx(value, value, value, value, value, false, value, value, value);
                //item.PrintOut(value, value, value, value, value, false, value, value);

                if (workbook != null)
                {
                    workbook.Close(false, Type.Missing, Type.Missing);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
                    //Marshal.FinalReleaseComObject(workBook);
                    workbook = null;
                }
                if (workbooks != null)
                {
                    workbooks.Close();
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
                    workbooks = null;
                }
                if (applicationClass != null)
                {
                    applicationClass.Quit();
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(applicationClass);
                    applicationClass = null;
                }



                GC.Collect();
                GC.WaitForPendingFinalizers();
                return(flag);
            }
            catch (Exception exception)
            {
                classLims_NPOI.WriteLog(exception, "");
                throw exception;
            }

            finally
            {
            }
        }
Example #13
0
        public bool ExcelWorkbookPrintToPDF(string fromExcelPath, string toPath)
        {
            bool flag = false;

            if (File.Exists(fromExcelPath))
            {
                EXCEL.ApplicationClass excel     = null;
                EXCEL.Workbook         workBook  = null;
                EXCEL.Workbooks        workBooks = null;
                object missing = Type.Missing;
                try
                {
                    if (fromExcelPath.Length == 0)
                    {
                        flag = false;
                        throw new Exception("需要转换的源文件路径不能为空。");
                    }
                    if (toPath.Length == 0)
                    {
                        flag = false;
                        throw new Exception("需要转换的目标文件路径不能为空。");
                    }

                    excel     = new EXCEL.ApplicationClass();
                    workBooks = excel.Workbooks;
                    Type type = workBooks.GetType();
                    workBook = workBooks.Open(fromExcelPath, missing, true,
                                              missing, missing, missing, missing, missing,
                                              missing, missing, missing, missing, missing,
                                              missing, missing);

                    //先使用分页视图打开,EXCEl获取 HPageBreaks 需要在分页视图中
                    excel.ActiveWindow.View = EXCEL.XlWindowView.xlPageBreakPreview;
                    //int hpbCount = classExcelMthd.getSheetPageCount(workBook, 1);
                    //按照设置好的打印区域发布为pdf
                    workBook.PrintOutEx(missing, missing, missing, false, missing,
                                        true, false, "ZZY", true);
                    //再还原为普通视图
                    excel.ActiveWindow.View = EXCEL.XlWindowView.xlNormalView;
                    flag = true;
                }
                catch (Exception exception)
                {
                    classLims_NPOI.WriteLog(exception, "");
                    flag = false;
                }
                finally
                {
                    if (workBook != null)
                    {
                        workBook.Close(false, missing, missing);
                        Marshal.ReleaseComObject(workBook);
                        //Marshal.FinalReleaseComObject(workBook);
                        workBook = null;
                    }
                    if (workBooks != null)
                    {
                        workBooks.Close();
                        Marshal.ReleaseComObject(workBooks);
                        workBook = null;
                    }
                    if (excel != null)
                    {
                        excel.Quit();
                        Marshal.ReleaseComObject(excel);
                        //Marshal.FinalReleaseComObject(excel);
                        excel = null;
                    }
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                }
            }
            return(flag);
        }