Exemplo n.º 1
0
        public ExcelWriter(string _fileName)
        {
            fileName = _fileName;

            if(File.Exists(FilePath))
                throw new ApplicationException("File already exists: " + FilePath);

            File.Create(FilePath);

            app = new Microsoft.Office.Interop.Excel.Application();

            Console.Error.WriteLine("Connected to Excel");

            wbs = app.Workbooks;

            wb = wbs.Add(1);

            wb.Activate();

            wss = wb.Sheets;

            ws = (Microsoft.Office.Interop.Excel.Worksheet)wss.get_Item(1);

            Console.Error.WriteLine("Excel Worksheet Initialized");
        }
Exemplo n.º 2
0
        private void OnExportPalletSeleccion(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Excel.Application excel = null;
            Microsoft.Office.Interop.Excel.Workbook    wb    = null;

            object missing = Type.Missing;

            Microsoft.Office.Interop.Excel.Worksheet ws  = null;
            Microsoft.Office.Interop.Excel.Range     rng = null;

            try
            {
                int filas_seleccion = View.ListadoBusquedaDespachos.SelectedItems.Count;

                if (filas_seleccion > 0)
                {
                    excel = new Microsoft.Office.Interop.Excel.Application();

                    wb = excel.Workbooks.Add();
                    ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;

                    for (int Idx = 0; Idx < View.GridViewListaEquiposDespacho.Columns.Count; Idx++)
                    {
                        ws.Range["A1"].Offset[0, Idx].Value          = View.GridViewListaEquiposDespacho.Columns[Idx].Header.ToString();
                        ws.Range["A1"].Offset[0, Idx].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Orange);
                    }
                    int cont = 0;

                    foreach (DataRowView Registros in View.ListadoPalletSeriales.Items)
                    {
                        ws.get_Range("A1", "H" + cont + 1).EntireColumn.NumberFormat = "@";

                        ws.Range["A2"].Offset[cont].Resize[1, View.GridViewListaEquiposDespacho.Columns.Count].Value =
                            Registros.Row.ItemArray;
                        cont++;
                    }

                    rng = ws.get_Range("A1", "H" + cont + 1);
                    rng.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                    rng.Columns.AutoFit();

                    excel.Visible = true;
                    wb.Activate();
                }
                else
                {
                    Util.ShowMessage("Debe seleccionar uno o varios pallets para la generación del archivo");
                }
            }
            catch (Exception ex)
            {
                Util.ShowMessage("Problema para crear el archivo Excel: " + ex.ToString());
            }
        }
        private async void ExportExcel_Click(object sender, RoutedEventArgs e)
        {
            await Task.Yield();

            DataTable dt = PlotViewModel.GetPlotDataTable();

            Microsoft.Office.Interop.Excel.Application excel = null;
            Microsoft.Office.Interop.Excel.Workbook    wb    = null;
            object missing = Type.Missing;

            Microsoft.Office.Interop.Excel.Worksheet ws = null;
            try
            {
                excel = new Microsoft.Office.Interop.Excel.Application();
                wb    = excel.Workbooks.Add();
                ws    = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;
                for (int Idx = 0; Idx < dt.Columns.Count; Idx++)
                {
                    ws.Range["A1"].Offset[0, Idx].Value = dt.Columns[Idx].ColumnName;
                }

                /*
                 * for (int Idx = 0; Idx < dt.Rows.Count; Idx++)
                 * {
                 *  // Add the whole row at once
                 *  ws.Range["A2"].Offset[Idx].Resize[1, dt.Columns.Count].Value =
                 *  dt.Rows[Idx].ItemArray;
                 * }
                 */
                Microsoft.Office.Interop.Excel.Range top    = ws.Cells[2, 1];
                Microsoft.Office.Interop.Excel.Range bottom = ws.Cells[dt.Rows.Count + 1, dt.Columns.Count];
                Microsoft.Office.Interop.Excel.Range all    = ws.get_Range(top, bottom);
                object[,] arrayDT = new object[dt.Rows.Count, dt.Columns.Count];
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        arrayDT[i, j] = dt.Rows[i][j];
                    }
                }
                all.Value2    = arrayDT;
                excel.Visible = true;
                wb.Activate();
            }
            catch (COMException ex)
            {
                MessageBox.Show("Error accessing Excel: " + ex.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.ToString());
            }
        }
Exemplo n.º 4
0
        private void OnExportNovedades(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Excel.Application excel = null;
            Microsoft.Office.Interop.Excel.Workbook    wb    = null;

            object missing = Type.Missing;

            Microsoft.Office.Interop.Excel.Worksheet ws  = null;
            Microsoft.Office.Interop.Excel.Range     rng = null;

            try
            {
                if (View.ListadoBusquedaNovedades.Items.Count > 0)
                {
                    excel = new Microsoft.Office.Interop.Excel.Application();

                    wb = excel.Workbooks.Add();
                    ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;

                    for (int Idx = 0; Idx < View.GridViewListaNovedades.Columns.Count; Idx++)
                    {
                        ws.Range["A1"].Offset[0, Idx].Value          = View.GridViewListaNovedades.Columns[Idx].Header.ToString();
                        ws.Range["A1"].Offset[0, Idx].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.DimGray);
                    }
                    int cont = 0;

                    foreach (DataRowView Registros in View.ListadoBusquedaNovedades.Items)
                    {
                        ws.get_Range("A1", "H" + cont + 1).EntireColumn.NumberFormat = "@";

                        ws.Range["A2"].Offset[cont].Resize[1, View.GridViewListaNovedades.Columns.Count].Value =
                            Registros.Row.ItemArray;
                        cont++;
                    }

                    rng = ws.get_Range("A1", "H" + cont + 1);
                    rng.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                    rng.Columns.AutoFit();

                    excel.Visible = true;
                    wb.Activate();
                }
                else
                {
                    Util.ShowMessage("La tabla no tiene registros para exportar.");
                }
            }
            catch (Exception ex)
            {
                Util.ShowMessage("Error creando el archivo Excel: " + ex.ToString());
            }
        }
        public void OnexportarTracking(object sender, EventArgs e)
        {
            if (View.ListadoEquipos_Track.SelectedIndex == -1)
            {
                Util.ShowMessage("Por favor seleccione un equipo para poder exportar todos sus movimientos");
                return;
            }

            Microsoft.Office.Interop.Excel.Application excel = null;
            Microsoft.Office.Interop.Excel.Workbook    wb    = null;

            object missing = Type.Missing;

            Microsoft.Office.Interop.Excel.Worksheet ws  = null;
            Microsoft.Office.Interop.Excel.Range     rng = null;
            try
            {
                excel = new Microsoft.Office.Interop.Excel.Application();

                wb = excel.Workbooks.Add();
                ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;

                for (int i = 0; i < View.Model.ListMovimientos.Columns.Count; i++)
                {
                    ws.Range["A1"].Offset[0, i].Value          = View.Model.ListMovimientos.Columns[i].ColumnName.ToString().ToUpper();;
                    ws.Range["A1"].Offset[0, i].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
                }

                for (int i = 0; i < View.Model.ListMovimientos.Rows.Count; i++)
                {
                    ws.get_Range("A1", "H" + cont + 1).EntireColumn.NumberFormat = "@";
                    ws.Range["A2"].Offset[i].Resize[1, View.Model.ListMovimientos.Columns.Count].Value = View.Model.ListMovimientos.Rows[i].ItemArray;
                }

                rng = ws.get_Range("A1", "H" + View.Model.ListMovimientos.Rows.Count + 1);
                rng.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
                rng.Columns.AutoFit();

                ws.Name       = "Movimiento del equipo ";
                excel.Visible = true;
                wb.Activate();
            }
            catch (Exception ex)
            {
                Util.ShowMessage("Error al crear el archivo excel de exportación " + ex.Message);
            }
        }
Exemplo n.º 6
0
        public static void ExportToExcel(DataTable dt, string Name)
        {
            Microsoft.Office.Interop.Excel.Application excel = null;
            Microsoft.Office.Interop.Excel.Workbook    wb    = null;

            object missing = Type.Missing;

            Microsoft.Office.Interop.Excel.Worksheet ws  = null;
            Microsoft.Office.Interop.Excel.Range     rng = null;

            try
            {
                excel   = new Microsoft.Office.Interop.Excel.Application();
                wb      = excel.Workbooks.Add();
                ws      = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;
                ws.Name = Name;
                for (int Idx = 0; Idx < dt.Columns.Count; Idx++)
                {
                    ws.Range["A1"].Offset[0, Idx].Value = dt.Columns[Idx].ColumnName;
                }

                for (int Idx = 0; Idx < dt.Rows.Count; Idx++)
                {  // <small>hey! I did not invent this line of code,
                   // I found it somewhere on CodeProject.</small>
                   // <small>It works to add the whole row at once, pretty cool huh?</small>
                    ws.Range["A2"].Offset[Idx].Resize[1, dt.Columns.Count].Value =
                        dt.Rows[Idx].ItemArray;
                }

                excel.Visible = true;
                wb.Activate();
            }
            catch (COMException ex)
            {
                MessageBox.Show("Error accessing Excel: " + ex.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.ToString());
            }
        }
Exemplo n.º 7
0
        private void GetXLSfile()
        {
            Microsoft.Office.Interop.Excel.Application excel = null;
            Microsoft.Office.Interop.Excel.Workbook    wb    = null;

            object missing = Type.Missing;

            Microsoft.Office.Interop.Excel.Worksheet ws  = null;
            Microsoft.Office.Interop.Excel.Range     rng = null;

            try
            {
                excel = new Microsoft.Office.Interop.Excel.Application();
                wb    = excel.Workbooks.Add();
                ws    = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;

                for (int Idx = 0; Idx < DTS.Columns.Count; Idx++)
                {
                    ws.Range["A1"].Offset[0, Idx].Value = DTS.Columns[Idx].ColumnName;
                }

                for (int Idx = 0; Idx < DTS.Rows.Count; Idx++)
                {
                    ws.Range["A2"].Offset[Idx].Resize[1, DTS.Columns.Count].Value =
                        DTS.Rows[Idx].ItemArray;
                }

                excel.Visible = true;
                wb.Activate();
            }
            catch (COMException ex)
            {
                MessageBox.Show("Error accessing Excel: " + ex.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.ToString());
            }
        }
Exemplo n.º 8
0
        private void exportBtnClick(object sender, RoutedEventArgs e)
        {
            int       month = Convert.ToInt32(cmbMonth.SelectedValue.ToString());
            int       year  = Convert.ToInt32(cmbYear.SelectedValue.ToString());
            DateTime  date  = datePicker.SelectedDate.Value;
            DataTable dt    = new DataTable();

            if (cmbType.SelectedIndex == 0)
            {
                dt = receiptMngController.LoadData();
            }
            else if (cmbType.SelectedIndex == 1)
            {
                dt = receiptMngController.LoadDataOnDate(date);
            }
            else if (cmbType.SelectedIndex == 2)
            {
                dt = receiptMngController.LoadDataOnMonth(month, year);
            }
            else
            {
                dt = receiptMngController.LoadDataOnMonth(0, year);
            }

            object missing = Type.Missing;

            Microsoft.Office.Interop.Excel.Application excel          = null;
            Microsoft.Office.Interop.Excel.Workbook    wb             = null;
            Microsoft.Office.Interop.Excel.Worksheet   excelSheet     = null;
            Microsoft.Office.Interop.Excel.Range       excelCellrange = null;
            try
            {
                excel      = new Microsoft.Office.Interop.Excel.Application();
                wb         = excel.Workbooks.Add();
                excelSheet = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;

                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    excelSheet.Range["A1"].Offset[0, i].Value = dt.Columns[i].ColumnName;
                }

                double totalIncome      = 0;
                int    totalNormalSeats = 0;
                int    totalVIPSeats    = 0;
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    excelSheet.Range["A2"].Offset[i].Resize[1, dt.Columns.Count].Value = dt.Rows[i].ItemArray;
                    totalIncome      += Convert.ToDouble(dt.Rows[i]["Tong tien"].ToString());
                    totalNormalSeats += Convert.ToInt32(dt.Rows[i]["SoVeThuong"].ToString());
                    totalVIPSeats    += Convert.ToInt32(dt.Rows[i]["SoVeVIP"].ToString());
                }

                excelSheet.Range["I1"].Value = "Tổng thu nhập";
                excelSheet.Range["I2"].Value = totalIncome;

                excelSheet.Range["I4"].Value = "Số ghế thường:";
                excelSheet.Range["I5"].Value = totalNormalSeats;

                excelSheet.Range["I7"].Value = "Số ghế VIP:";
                excelSheet.Range["I8"].Value = totalVIPSeats;

                excelSheet.Range["K1"].Value = "Tổng số ghế đã bán";
                excelSheet.Range["K2"].Value = totalNormalSeats + totalVIPSeats;

                excel.Visible = true;
                wb.Activate();
            }
            catch (COMException ex)
            {
                MessageBox.Show("Error accessing Excel: " + ex.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.ToString());
            }
        }
Exemplo n.º 9
0
        private void btnindt_Click(object sender, EventArgs e)
        {
            if (dgvds.Rows.Count > 0)
            {
                SaveFileDialog file = new SaveFileDialog();
                Microsoft.Office.Interop.Excel.Application exApp     = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbook    exBook    = exApp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
                Microsoft.Office.Interop.Excel.Worksheet   exSheet   = (Microsoft.Office.Interop.Excel.Worksheet)exBook.Worksheets[1];
                Microsoft.Office.Interop.Excel.Range       tenTruong = (Microsoft.Office.Interop.Excel.Range)exSheet.Cells[1, 1];
                //Dua du lieu vao excel
                tenTruong.Range["A1:D1"].MergeCells = true;
                tenTruong.Range["A1"].Value         = "Cửa Hàng Rượu Chivas 25";
                tenTruong.Range["A1"].Font.Size     = 12;
                tenTruong.Range["A1"].Font.Bold     = true;
                tenTruong.Range["A1"].Font.Color    = Color.Red;
                tenTruong.Range["A2"].Value         = "Địa chỉ: Xuân Diệu - Hà Nội";
                tenTruong.Range["A2"].Font.Size     = 12;
                tenTruong.Range["A2"].Font.Bold     = true;
                tenTruong.Range["A2"].Font.Color    = Color.Green;
                tenTruong.Range["A3"].Value         = "Điện thoại: 0964895108";
                tenTruong.Range["A3"].Font.Size     = 12;
                tenTruong.Range["A3"].Font.Bold     = true;
                tenTruong.Range["A3"].Font.Color    = Color.Green;
                tenTruong.Range["C5:f5"].MergeCells = true;
                tenTruong.Range["C5:F5"].Font.Size  = 18;
                tenTruong.Range["C5:F5"].Font.Color = Color.Red;
                tenTruong.Range["C5"].Value         = "Doanh thu cửa hàng";
                tenTruong.Range["A8"].Value         = "STT ";
                tenTruong.Range["B8"].Value         = "Mã hàng ";
                tenTruong.Range["B8"].ColumnWidth   = 20;
                tenTruong.Range["C8"].Value         = "Tên hàng ";
                tenTruong.Range["C8"].ColumnWidth   = 20;
                tenTruong.Range["D8"].Value         = "Số lượng";
                tenTruong.Range["D8"].ColumnWidth   = 15;
                tenTruong.Range["E8"].Value         = "Tổng tiền ";
                tenTruong.Range["E8"].ColumnWidth   = 15;
                tenTruong.Range["F8"].Value         = "Số tiền lãi";
                tenTruong.Range["F8"].ColumnWidth   = 15;
                int hang = 8;

                for (int i = 0; i < dgvds.Rows.Count; i++)
                {
                    hang++;
                    tenTruong.Range["A" + hang.ToString()].Value = (i + 1).ToString();
                    tenTruong.Range["B" + hang.ToString()].Value = dgvds.Rows[i].Cells[0].Value.ToString();
                    tenTruong.Range["C" + hang.ToString()].Value = dgvds.Rows[i].Cells[1].Value.ToString();
                    tenTruong.Range["D" + hang.ToString()].Value = dgvds.Rows[i].Cells[2].Value.ToString();
                    tenTruong.Range["E" + hang.ToString()].Value = dgvds.Rows[i].Cells[3].Value.ToString();
                    tenTruong.Range["F" + hang.ToString()].Value = dgvds.Rows[i].Cells[4].Value.ToString();
                }
                if (rdo1.Checked == true && cmbnam.Text != "")
                {
                    tenTruong.Range["E6"].Value       = "Tháng " + cmbthang.Text;
                    tenTruong.Range["E6"].ColumnWidth = 15;
                    tenTruong.Range["F6"].Value       = " Năm " + cmbnam.Text;
                    tenTruong.Range["F6"].ColumnWidth = 15;
                }
                else if (rdo2.Checked == true && cmbnam.Text != "")
                {
                    tenTruong.Range["E6"].Value       = "Quý " + cmbquy.Text;
                    tenTruong.Range["E6"].ColumnWidth = 15;
                    tenTruong.Range["F6"].Value       = " Năm " + cmbnam.Text;
                    tenTruong.Range["F6"].ColumnWidth = 15;
                }
                else
                {
                    tenTruong.Range["E6"].Value       = "Năm " + cmbnam.Text;
                    tenTruong.Range["E6"].ColumnWidth = 15;
                }
                exSheet.Name = "Doanhthu";
                exBook.Activate();
                if (file.ShowDialog() == DialogResult.OK)
                {
                    exBook.SaveAs(file.FileName.ToString());
                }
                exApp.Quit();

                dgvds.DataSource = null;
            }
            else
            {
                MessageBox.Show("Không có danh sách để in", "Thông báo");
            }
        }
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtUriage">
        ///     売上管理表のデータテーブル</param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtUriage, List <string> lstItem, string pr, int num)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            Microsoft.Office.Interop.Excel.Application objExcel     = null;
            Microsoft.Office.Interop.Excel.Workbooks   objWorkBooks = null;
            Microsoft.Office.Interop.Excel.Workbook    objWorkBook  = null;
            Microsoft.Office.Interop.Excel.Worksheet   objWorkSheet = null;
            Microsoft.Office.Interop.Excel.Range       objRange     = null;

            //int pageRows = 38;
            int pageRows = 47;

            try
            {
                CreatePdf pdf = new CreatePdf();

                // ワークブックのデフォルトフォント、フォントサイズの指定
                XLWorkbook.DefaultStyle.Font.FontName = "MS 明朝";
                XLWorkbook.DefaultStyle.Font.FontSize = 9;

                // excelのインスタンス生成
                XLWorkbook workbook = new XLWorkbook(XLEventTracking.Disabled);

                IXLWorksheet worksheet    = workbook.Worksheets.Add("Header");
                IXLWorksheet headersheet  = worksheet;  // ヘッダーシート
                IXLWorksheet currentsheet = worksheet;  // 処理中シート


                //Linqで必要なデータをselect
                var outDataAll = dtUriage.AsEnumerable()
                                 .Select(dat => new
                {
                    groupCd           = dat["グループコード"],
                    groupName         = dat["グループ名"],
                    tantoCd           = dat["担当者コード"],
                    tantoName         = dat["担当者名"],
                    tokuisakiCd       = dat["得意先コード"],
                    tokuisakiName     = dat["得意先名"],
                    uriage            = (decimal)dat["売上額"],
                    arari             = (decimal)dat["粗利額"],
                    arariRitsu        = (decimal)dat["粗利率"],
                    getsumatsuUriage  = (decimal)dat["月末迄受注残売上"],
                    getsumatsuArari   = (decimal)dat["月末迄受注残粗利"],
                    yokugetsuUriage   = (decimal)dat["翌月以降受注残売上"],
                    yokugetsuArari    = (decimal)dat["翌月以降受注残粗利"],
                    getsumatsuUrikake = (decimal)dat["月末売掛金残"],
                    nyukin            = (decimal)dat["当月入金額"]
                }).ToList();

                // linqで合計算出
                decimal[] decKingaku = new decimal[9];
                decKingaku[0] = outDataAll.Select(gokei => gokei.uriage).Sum();
                decKingaku[1] = outDataAll.Select(gokei => gokei.arari).Sum();
                decKingaku[2] = outDataAll.Select(gokei => gokei.arariRitsu).Sum();
                decKingaku[3] = outDataAll.Select(gokei => gokei.getsumatsuUriage).Sum();
                decKingaku[4] = outDataAll.Select(gokei => gokei.getsumatsuArari).Sum();
                decKingaku[5] = outDataAll.Select(gokei => gokei.yokugetsuUriage).Sum();
                decKingaku[6] = outDataAll.Select(gokei => gokei.yokugetsuArari).Sum();
                decKingaku[7] = outDataAll.Select(gokei => gokei.getsumatsuUrikake).Sum();
                decKingaku[8] = outDataAll.Select(gokei => gokei.nyukin).Sum();

                // 担当者計
                var tantoGoukei = from tbl in dtUriage.AsEnumerable()
                                  group tbl by tbl.Field <string>("担当者コード") into g
                                  select new
                {
                    section           = g.Key,
                    count             = g.Count(),
                    uriage            = g.Sum(p => p.Field <decimal>("売上額")),
                    arari             = g.Sum(p => p.Field <decimal>("粗利額")),
                    arariRitsu        = g.Sum(p => p.Field <decimal>("粗利率")),
                    getsumatsuUriage  = g.Sum(p => p.Field <decimal>("月末迄受注残売上")),
                    getsumatsuArari   = g.Sum(p => p.Field <decimal>("月末迄受注残粗利")),
                    yokugetsuUriage   = g.Sum(p => p.Field <decimal>("翌月以降受注残売上")),
                    yokugetsuArari    = g.Sum(p => p.Field <decimal>("翌月以降受注残粗利")),
                    getsumatsuUrikake = g.Sum(p => p.Field <decimal>("月末売掛金残")),
                    nyukin            = g.Sum(p => p.Field <decimal>("当月入金額"))
                };

                // 担当者計の合計算出
                decimal[,] decKingakuTanto = new decimal[tantoGoukei.Count(), 9];
                for (int cnt = 0; cnt < tantoGoukei.Count(); cnt++)
                {
                    decKingakuTanto[cnt, 0] = tantoGoukei.ElementAt(cnt).uriage;
                    decKingakuTanto[cnt, 1] = tantoGoukei.ElementAt(cnt).arari;
                    decKingakuTanto[cnt, 2] = tantoGoukei.ElementAt(cnt).arariRitsu;
                    decKingakuTanto[cnt, 3] = tantoGoukei.ElementAt(cnt).getsumatsuUriage;
                    decKingakuTanto[cnt, 4] = tantoGoukei.ElementAt(cnt).getsumatsuArari;
                    decKingakuTanto[cnt, 5] = tantoGoukei.ElementAt(cnt).yokugetsuUriage;
                    decKingakuTanto[cnt, 6] = tantoGoukei.ElementAt(cnt).yokugetsuArari;
                    decKingakuTanto[cnt, 7] = tantoGoukei.ElementAt(cnt).getsumatsuUrikake;
                    decKingakuTanto[cnt, 8] = tantoGoukei.ElementAt(cnt).nyukin;
                }

                // グループ計
                var groupGoukei = from tbl in dtUriage.AsEnumerable()
                                  group tbl by tbl.Field <string>("グループコード") into g
                                  select new
                {
                    section           = g.Key,
                    count             = g.Count(),
                    uriage            = g.Sum(p => p.Field <decimal>("売上額")),
                    arari             = g.Sum(p => p.Field <decimal>("粗利額")),
                    arariRitsu        = g.Sum(p => p.Field <decimal>("粗利率")),
                    getsumatsuUriage  = g.Sum(p => p.Field <decimal>("月末迄受注残売上")),
                    getsumatsuArari   = g.Sum(p => p.Field <decimal>("月末迄受注残粗利")),
                    yokugetsuUriage   = g.Sum(p => p.Field <decimal>("翌月以降受注残売上")),
                    yokugetsuArari    = g.Sum(p => p.Field <decimal>("翌月以降受注残粗利")),
                    getsumatsuUrikake = g.Sum(p => p.Field <decimal>("月末売掛金残")),
                    nyukin            = g.Sum(p => p.Field <decimal>("当月入金額"))
                };

                // グループ計の合計算出
                decimal[,] decKingakuGroup = new decimal[groupGoukei.Count(), 9];
                for (int cnt = 0; cnt < groupGoukei.Count(); cnt++)
                {
                    decKingakuGroup[cnt, 0] = groupGoukei.ElementAt(cnt).uriage;
                    decKingakuGroup[cnt, 1] = groupGoukei.ElementAt(cnt).arari;
                    decKingakuGroup[cnt, 2] = groupGoukei.ElementAt(cnt).arariRitsu;
                    decKingakuGroup[cnt, 3] = groupGoukei.ElementAt(cnt).getsumatsuUriage;
                    decKingakuGroup[cnt, 4] = groupGoukei.ElementAt(cnt).getsumatsuArari;
                    decKingakuGroup[cnt, 5] = groupGoukei.ElementAt(cnt).yokugetsuUriage;
                    decKingakuGroup[cnt, 6] = groupGoukei.ElementAt(cnt).yokugetsuArari;
                    decKingakuGroup[cnt, 7] = groupGoukei.ElementAt(cnt).getsumatsuUrikake;
                    decKingakuGroup[cnt, 8] = groupGoukei.ElementAt(cnt).nyukin;
                }

                // リストをデータテーブルに変換
                DataTable dtChkList = pdf.ConvertToDataTable(outDataAll);

                int maxColCnt = dtChkList.Columns.Count;
                int rowCnt    = 1;  // datatable処理行カウント
                int xlsRowCnt = 5;  // Excel出力行カウント(開始は出力行)

                int tantoCnt    = 0;
                int tantoRowCnt = 0;
                int groupCnt    = 0;
                int groupRowCnt = 0;

                // ClosedXMLで1行ずつExcelに出力
                foreach (DataRow drUriage in dtChkList.Rows)
                {
                    // 1ページ目のシート作成
                    if (rowCnt == 1)
                    {
                        // タイトル出力(中央揃え、セル結合)
                        IXLCell titleCell = headersheet.Cell("A1");
                        titleCell.Value = "得意先別売上管理表";
                        titleCell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                        titleCell.Style.Font.FontSize        = 16;
                        headersheet.Range("A1", "M1").Merge();

                        // 開始年月日、終了年月日出力(A3のセル)
                        IXLCell unitCell = headersheet.Cell("A3");
                        unitCell.Value = "期間::" +
                                         string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[0])) + "~" +
                                         string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[1]));
                        unitCell.Style.Font.FontSize = 10;

                        // ヘッダー出力(3行目のセル)
                        headersheet.Cell("H3").Value = "指定期間内受注残";
                        headersheet.Range("H3", "I3").Merge();
                        headersheet.Cell("J3").Value = "指定期間以降受注残";
                        headersheet.Range("J3", "K3").Merge();

                        // ヘッダー出力(4行目のセル)
                        headersheet.Cell("A4").Value = "グループ名";
                        headersheet.Cell("B4").Value = "担当者名";
                        headersheet.Cell("C4").Value = "コード";
                        headersheet.Cell("D4").Value = "得意先名";
                        headersheet.Cell("E4").Value = "売上額";
                        headersheet.Cell("F4").Value = "粗利額";
                        headersheet.Cell("G4").Value = "粗利率";
                        headersheet.Cell("H4").Value = "金 額";
                        headersheet.Cell("I4").Value = "粗 利";
                        headersheet.Cell("J4").Value = "金 額";
                        headersheet.Cell("K4").Value = "粗 利";
                        headersheet.Cell("L4").Value = "月末売掛金残";
                        headersheet.Cell("M4").Value = "当月入金額";

                        // ヘッダー列
                        headersheet.Range("H3", "K3").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                        headersheet.Range("A4", "M4").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

                        // セルの周囲に罫線を引く
                        headersheet.Range("H3", "K3").Style
                        .Border.SetTopBorder(XLBorderStyleValues.Thin)
                        .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                        .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                        .Border.SetRightBorder(XLBorderStyleValues.Thin);
                        headersheet.Range("A4", "M4").Style
                        .Border.SetTopBorder(XLBorderStyleValues.Thin)
                        .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                        .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                        .Border.SetRightBorder(XLBorderStyleValues.Thin);

                        // セルの背景色
                        headersheet.Range("H3", "K3").Style.Fill.BackgroundColor = XLColor.LightGray;
                        headersheet.Range("A4", "M4").Style.Fill.BackgroundColor = XLColor.LightGray;

                        // 列幅の指定
                        headersheet.Column(1).Width = 10;
                        headersheet.Column(2).Width = 10;
                        headersheet.Column(3).Width = 5.4;
                        headersheet.Column(4).Width = 30;
                        headersheet.Column(5).Width = 12;
                        headersheet.Column(6).Width = 12;
                        headersheet.Column(7).Width = 8;
                        for (int cnt = 8; cnt <= 13; cnt++)
                        {
                            headersheet.Column(cnt).Width = 12;
                        }

                        // 印刷体裁(A4横、印刷範囲)
                        headersheet.PageSetup.PaperSize       = XLPaperSize.A4Paper;
                        headersheet.PageSetup.PageOrientation = XLPageOrientation.Landscape;
                        headersheet.PageSetup.Margins.Left    = 0.2;
                        headersheet.PageSetup.Margins.Right   = 0.2;

                        // ヘッダー部の指定(番号)
                        headersheet.PageSetup.Header.Left.AddText("(№63)");
                    }

                    // グループ名出力
                    if (groupRowCnt == 0)
                    {
                        xlsRowCnt = 5;

                        // ヘッダーシートのコピー
                        pdf.sheetCopy(ref workbook, ref headersheet, ref currentsheet, workbook.Worksheets.Count);

                        currentsheet.Cell(xlsRowCnt, 1).Value = drUriage[1];
                    }

                    // 担当者名出力
                    if (tantoRowCnt == 0)
                    {
                        currentsheet.Cell(xlsRowCnt, 2).Value = drUriage[3];

                        // 1行分のセルの周囲に罫線を引く
                        currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 13).Style
                        .Border.SetTopBorder(XLBorderStyleValues.Thin)
                        .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                        .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                        .Border.SetRightBorder(XLBorderStyleValues.Thin);

                        xlsRowCnt++;
                    }

                    // 35行毎(ヘッダーを除いた行数)にシート作成
                    if (xlsRowCnt == pageRows + 1)
                    {
                        xlsRowCnt = 5;

                        // ヘッダーシートのコピー
                        pdf.sheetCopy(ref workbook, ref headersheet, ref currentsheet, workbook.Worksheets.Count);
                    }

                    // 1セルずつデータ出力
                    for (int colCnt = 4; colCnt < maxColCnt; colCnt++)
                    {
                        string str = drUriage[colCnt].ToString();

                        // 金額セルの処理
                        if (colCnt == 6 || colCnt == 7 || colCnt >= 9 && colCnt <= 14)
                        {
                            // 3桁毎に","を挿入する
                            str = string.Format("{0:#,0}", decimal.Parse(str));
                            currentsheet.Cell(xlsRowCnt, colCnt - 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }

                        // 粗利率セルの処理
                        if (colCnt == 8)
                        {
                            // 3桁毎に","を挿入する、小数点第2位まで
                            currentsheet.Cell(xlsRowCnt, colCnt - 1).Style.NumberFormat.SetFormat("#,##0.00");
                            currentsheet.Cell(xlsRowCnt, colCnt - 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }

                        currentsheet.Cell(xlsRowCnt, colCnt - 1).Value = str;
                    }

                    // 1行分のセルの周囲に罫線を引く
                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 13).Style
                    .Border.SetTopBorder(XLBorderStyleValues.Thin)
                    .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                    .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                    .Border.SetRightBorder(XLBorderStyleValues.Thin);

                    // 35行毎(ヘッダーを除いた行数)にシート作成
                    if (xlsRowCnt == pageRows)
                    {
                        xlsRowCnt = 4;

                        // ヘッダーシートのコピー
                        pdf.sheetCopy(ref workbook, ref headersheet, ref currentsheet, workbook.Worksheets.Count);
                    }

                    // 担当者計を出力
                    tantoRowCnt++;
                    if (tantoGoukei.ElementAt(tantoCnt).count == tantoRowCnt)
                    {
                        xlsRowCnt++;

                        // セル結合
                        currentsheet.Range(xlsRowCnt, 2, xlsRowCnt, 3).Merge();

                        currentsheet.Cell(xlsRowCnt, 4).Value = "◆担当者計◆";
                        for (int cnt = 0; cnt < 9; cnt++)
                        {
                            // 粗利率の場合
                            if (cnt == 2)
                            {
                                // 売上額が0でない場合
                                if (decKingakuTanto[tantoCnt, 0] != 0)
                                {
                                    decKingakuTanto[tantoCnt, cnt] = decKingakuTanto[tantoCnt, 1] / decKingakuTanto[tantoCnt, 0] * 100;
                                }
                                else
                                {
                                    decKingakuTanto[tantoCnt, cnt] = 0;
                                }
                                currentsheet.Cell(xlsRowCnt, cnt + 5).Value = decKingakuTanto[tantoCnt, cnt].ToString();
                                currentsheet.Cell(xlsRowCnt, cnt + 5).Style.NumberFormat.SetFormat("#,##0.00");
                            }
                            else
                            {
                                currentsheet.Cell(xlsRowCnt, cnt + 5).Value = string.Format("{0:#,0}", decKingakuTanto[tantoCnt, cnt]);
                            }
                            currentsheet.Cell(xlsRowCnt, cnt + 5).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }

                        // 1行分のセルの周囲に罫線を引く
                        currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 13).Style
                        .Border.SetTopBorder(XLBorderStyleValues.Thin)
                        .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                        .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                        .Border.SetRightBorder(XLBorderStyleValues.Thin);

                        tantoCnt++;
                        tantoRowCnt = 0;
                    }

                    // 35行毎(ヘッダーを除いた行数)にシート作成
                    if (xlsRowCnt == pageRows)
                    {
                        xlsRowCnt = 4;

                        // ヘッダーシートのコピー
                        pdf.sheetCopy(ref workbook, ref headersheet, ref currentsheet, workbook.Worksheets.Count);
                    }

                    // グループ計を出力
                    groupRowCnt++;
                    if (groupGoukei.ElementAt(groupCnt).count == groupRowCnt)
                    {
                        xlsRowCnt++;

                        // セル結合
                        currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 3).Merge();

                        currentsheet.Cell(xlsRowCnt, 4).Value = "◆グループ計◆";
                        for (int cnt = 0; cnt < 9; cnt++)
                        {
                            // 粗利率の場合
                            if (cnt == 2)
                            {
                                // 売上額が0でない場合
                                if (decKingakuGroup[groupCnt, 0] != 0)
                                {
                                    decKingakuGroup[groupCnt, cnt] = decKingakuGroup[groupCnt, 1] / decKingakuGroup[groupCnt, 0] * 100;
                                }
                                else
                                {
                                    decKingakuGroup[groupCnt, cnt] = 0;
                                }
                                currentsheet.Cell(xlsRowCnt, cnt + 5).Value = decKingakuGroup[groupCnt, cnt].ToString();
                                currentsheet.Cell(xlsRowCnt, cnt + 5).Style.NumberFormat.SetFormat("#,##0.00");
                            }
                            else
                            {
                                currentsheet.Cell(xlsRowCnt, cnt + 5).Value = string.Format("{0:#,0}", decKingakuGroup[groupCnt, cnt]);
                            }
                            currentsheet.Cell(xlsRowCnt, cnt + 5).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }

                        // 1行分のセルの周囲に罫線を引く
                        currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 13).Style
                        .Border.SetTopBorder(XLBorderStyleValues.Thin)
                        .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                        .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                        .Border.SetRightBorder(XLBorderStyleValues.Thin);

                        groupCnt++;
                        groupRowCnt = 0;
                    }

                    // 35行毎(ヘッダーを除いた行数)にシート作成
                    if (xlsRowCnt == pageRows)
                    {
                        xlsRowCnt = 4;

                        // ヘッダーシートのコピー
                        pdf.sheetCopy(ref workbook, ref headersheet, ref currentsheet, workbook.Worksheets.Count);
                    }

                    rowCnt++;
                    xlsRowCnt++;
                }

                // 最終行を出力した後、合計行を出力
                if (dtChkList.Rows.Count > 0)
                {
                    // セル結合
                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 3).Merge();

                    currentsheet.Cell(xlsRowCnt, 4).Value = "◆総合計◆";
                    for (int cnt = 0; cnt < 9; cnt++)
                    {
                        // 粗利率の場合
                        if (cnt == 2)
                        {
                            // 売上額が0でない場合
                            if (decKingaku[0] != 0)
                            {
                                decKingaku[cnt] = decKingaku[1] / decKingaku[0] * 100;
                            }
                            else
                            {
                                decKingaku[cnt] = 0;
                            }
                            currentsheet.Cell(xlsRowCnt, cnt + 5).Value = decKingaku[cnt].ToString();
                            currentsheet.Cell(xlsRowCnt, cnt + 5).Style.NumberFormat.SetFormat("#,##0.00");
                        }
                        else
                        {
                            currentsheet.Cell(xlsRowCnt, cnt + 5).Value = string.Format("{0:#,0}", decKingaku[cnt]);
                        }
                        currentsheet.Cell(xlsRowCnt, cnt + 5).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                    }

                    // 1行分のセルの周囲に罫線を引く
                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 13).Style
                    .Border.SetTopBorder(XLBorderStyleValues.Thin)
                    .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                    .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                    .Border.SetRightBorder(XLBorderStyleValues.Thin);
                }

                // ヘッダーシート削除
                headersheet.Delete();

                // 各ページのヘッダー部を指定
                int maxPage = workbook.Worksheets.Count;
                for (int pageCnt = 1; pageCnt <= maxPage; pageCnt++)
                {
                    // ヘッダー部に指定する情報を取得
                    string strHeader = pdf.getHeader(pageCnt, maxPage, strNow);

                    // ヘッダー部の指定(コンピュータ名、日付、ページ数を出力)
                    workbook.Worksheet(pageCnt).PageSetup.Header.Right.AddText(strHeader);
                }

                // workbookを保存
                string strOutXlsFile = strWorkPath + strDateTime + ".xlsx";
                workbook.SaveAs(strOutXlsFile);

                // workbookを解放
                workbook.Dispose();

                // PDF化の処理
                //return pdf.createPdf(strOutXlsFile, strDateTime, 0);

                objExcel         = new Microsoft.Office.Interop.Excel.Application();
                objExcel.Visible = false;

                if (pr != null)
                {
                    objExcel.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMinimized;
                }
                else
                {
                    objExcel.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMaximized;
                }

                objExcel.DisplayAlerts = false;

                objWorkBooks = objExcel.Workbooks;

                String strP = System.IO.Path.GetFullPath(strOutXlsFile);

                objWorkBook = objWorkBooks.Open(strP,         //_xslFile,     // FileName:ファイル名
                                                Type.Missing, // UpdateLinks:ファイル内の外部参照の更新方法
                                                Type.Missing, // ReadOnly:ReadOnlyにするかどうか
                                                Type.Missing, // Format: テキストファイルを開く場合に区切り文字を指定する
                                                Type.Missing, // Password:開く際にパスワードがある場合にパスワードを入力
                                                Type.Missing, // WriteResPassword:書き込む際にパスワードがある場合にパスワードを入力
                                                Type.Missing, // IgnoreReadOnlyRecommended:[読み取り専用を推奨する]チェックがオンの場合でも[読み取り専用を推奨する]メッセージを非表示
                                                Type.Missing, // Origin:テキストファイルの場合、プラットフォームを指定
                                                Type.Missing, // Delimiter:テキストファイルで且つ引数Formatが6の場合に区切り文字を指定
                                                Type.Missing, // Editable:Excel4.0アドインの場合、アドインウィンドウを出すか指定
                                                Type.Missing, // Notify:ファイルが読み取りor書き込みモードで開けない場合に通知リストに追加するか指定
                                                Type.Missing, // Converter:ファイルを開くときに最初に使用するファイルコンバーターのインデックス番号を指定
                                                Type.Missing, // AddToMru:最近使用したファイルの一覧にブックを追加するか指定
                                                Type.Missing, // Local:Excel言語設定に合わせてファイルを保存するか指定
                                                Type.Missing  // CorruptLoad:使用できる定数は[xlNormalLoad][xlRepairFile][xlExtractData]。指定がない場合のは[xlNormalLoad]になりOMを通じて開始するときに回復は行われません。
                                                );

                if (pr != null)
                {
                    for (int ip = 0; ip < num; ip++)
                    {
                        objWorkBook.PrintOut(Type.Missing, // From:印刷開始のページ番号
                                             Type.Missing, // To:印刷終了のページ番号
                                             1,            // Copies:印刷部数
                                             Type.Missing, // Preview:印刷プレビューをするか指定
                                             pr,           // ActivePrinter:プリンターの名称
                                             Type.Missing, // PrintToFile:ファイル出力をするか指定
                                             true,         // Collate:部単位で印刷するか指定
                                             Type.Missing  // PrToFileName	:出力先ファイルの名前を指定するかどうか
                                             );
                    }
                }
                else
                {
                    objWorkBook.PrintOut(Type.Missing, // From:印刷開始のページ番号
                                         Type.Missing, // To:印刷終了のページ番号
                                         1,            // Copies:印刷部数
                                         true,         // Preview:印刷プレビューをするか指定
                                         pr,           // ActivePrinter:プリンターの名称
                                         Type.Missing, // PrintToFile:ファイル出力をするか指定
                                         true,         // Collate:部単位で印刷するか指定
                                         Type.Missing  // PrToFileName	:出力先ファイルの名前を指定するかどうか
                                         );
                    objExcel.Visible = true;
                    objWorkBook.Activate();
                }

                return("");
            }
            catch
            {
                throw;
            }
            finally
            {
                // EXCEL終了処理
                if (objWorkSheet != null)
                {
                    Marshal.ReleaseComObject(objWorkSheet);     // オブジェクト参照を解放
                    objWorkSheet = null;                        // オブジェクト解放
                }

                if (objWorkBook != null)
                {
                    objWorkBook.Close(false,
                                      Type.Missing, Type.Missing); //ファイルを閉じる
                    Marshal.ReleaseComObject(objWorkBook);         // オブジェクト参照を解放
                    objWorkBook = null;                            // オブジェクト解放
                }

                if (objWorkBooks != null)
                {
                    Marshal.ReleaseComObject(objWorkBooks);     // オブジェクト参照を解放
                    objWorkBooks = null;                        // オブジェクト解放
                }
                if (objExcel != null)
                {
                    objExcel.Quit();                            // EXCELを閉じる

                    Marshal.ReleaseComObject(objExcel);         // オブジェクト参照を解放
                    objExcel = null;                            // オブジェクト解放
                }

                System.GC.Collect();
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
Exemplo n.º 11
0
        private void Export_Click(object sender, RoutedEventArgs e)
        {
            //Generates an empty excel document
            Microsoft.Office.Interop.Excel.Application excel = null;
            Microsoft.Office.Interop.Excel.Workbook    wb    = null;

            object missing = Type.Missing;

            Microsoft.Office.Interop.Excel.Worksheet ws = null;

            using (SqlConnection con = new SqlConnection(connectionString))
                try
                {
                    con.Open();
                    SqlCommand cmd = new SqlCommand(reportQuery, con); //uses query generated in BindDataGrid to fill the dataTable

                    DataTable      Reports = new DataTable();
                    SqlDataAdapter sda     = new SqlDataAdapter(cmd);
                    using (sda)
                    {
                        sda.Fill(Reports);
                    }

                    string historyQuery = "SELECT History.TaskNum, FORMAT(History.EntryDate, 'MM/dd/yyyy') AS EntryDate, History.New_StatusNote AS LatestStatusNote, History.[Status] AS LatestStatus " +
                                          "FROM New_Issues INNER JOIN History ON History.TaskNum = New_Issues.ID WHERE New_Issues.Sys_Impact LIKE '%CIM%' " +
                                          "AND New_Issues.[Status] NOT LIKE '%closed%' AND New_Issues.[Status] NOT LIKE '%Implemented%' AND New_Issues.[Status] NOT LIKE '%dropped%' " +
                                          "AND New_Issues.[Status] NOT LIKE '%deferred%' ORDER BY History.EntryDate DESC;";

                    SqlCommand     cmdTwo  = new SqlCommand(historyQuery, con);
                    DataTable      History = new DataTable();
                    SqlDataAdapter sdaTwo  = new SqlDataAdapter(cmdTwo);

                    using (sdaTwo)
                    {
                        sdaTwo.Fill(History);
                    }

                    //A list object that will store each TaskNum from the rows generated by hQueryOne query
                    List <int> taskNums = new List <int>();

                    int taskOne    = History.Rows[0].Field <int>("TaskNum"); //the TaskNum at position 0 in historyFull
                    int rowCounter = 0;                                      //Counter that tells us what position we are in in datatable historyFull
                    //int numTaskNums = taskNums.Distinct().Count();
                    //will tell us what the currentTasknum is, will determine whether the row is exported to excel or not
                    int currentTask;

                    //The DataTable that will displayed to the user in excel file, with the most recent statuses
                    DataTable historyRecent = new DataTable();
                    //Columns that will be displayed in excel file
                    DataColumn dc1 = new DataColumn("TaskNum");
                    DataColumn dc2 = new DataColumn("EntryDate");
                    DataColumn dc3 = new DataColumn("LatestStatusNote");
                    DataColumn dc4 = new DataColumn("LatestStatus");

                    historyRecent.Columns.Add(dc1);
                    historyRecent.Columns.Add(dc2);
                    historyRecent.Columns.Add(dc3);
                    historyRecent.Columns.Add(dc4);
                    //Add rows to historyRecent based on condition that a row with that taskNum isn't already imported into the table

                    foreach (DataRow dr in History.Rows)
                    {
                        currentTask = History.Rows[rowCounter].Field <int>("TaskNum");
                        if ((!taskNums.Contains(currentTask)) || rowCounter == 0)
                        {
                            taskNums.Add(currentTask);
                            historyRecent.ImportRow(dr);
                        }
                        rowCounter++;
                    }

                    excel = new Microsoft.Office.Interop.Excel.Application();
                    wb    = excel.Workbooks.Add();
                    ws    = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;

                    for (int idx = 0; idx < historyRecent.Columns.Count; idx++)
                    {
                        ws.Range["L1"].Offset[0, idx].Value = historyRecent.Columns[idx].ColumnName;
                    }

                    for (int idx = 0; idx < historyRecent.Rows.Count; idx++)
                    {
                        ws.Range["L2"].Offset[idx].Resize[1, historyRecent.Columns.Count].Value = historyRecent.Rows[idx].ItemArray;
                    }

                    for (int idx = 0; idx < Reports.Columns.Count; idx++)
                    {
                        ws.Range["A1"].Offset[0, idx].Value = Reports.Columns[idx].ColumnName;
                    }

                    for (int idx = 0; idx < Reports.Rows.Count; idx++)
                    {
                        ws.Range["A2"].Offset[idx].Resize[1, Reports.Columns.Count].Value = Reports.Rows[idx].ItemArray;
                    }

                    ws.Columns.AutoFit();
                    excel.Visible = true;
                    wb.Activate();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }

            finally
            {
                con.Close();
            }
        }
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtSiireCheakList">
        ///     仕入推移表のデータテーブル</param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtZaikoIchiran, List <string> lstItem, string p)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            Microsoft.Office.Interop.Excel.Application objExcel     = null;
            Microsoft.Office.Interop.Excel.Workbooks   objWorkBooks = null;
            Microsoft.Office.Interop.Excel.Workbook    objWorkBook  = null;
            Microsoft.Office.Interop.Excel.Worksheet   objWorkSheet = null;
            Microsoft.Office.Interop.Excel.Range       objRange     = null;

            try
            {
                CreatePdf pdf = new CreatePdf();

                // ワークブックのデフォルトフォント、フォントサイズの指定
                XLWorkbook.DefaultStyle.Font.FontName = "MS 明朝";
                XLWorkbook.DefaultStyle.Font.FontSize = 9;

                // excelのインスタンス生成
                XLWorkbook workbook = new XLWorkbook(XLEventTracking.Disabled);

                IXLWorksheet worksheet    = workbook.Worksheets.Add("Header");
                IXLWorksheet headersheet  = worksheet;  // ヘッダーシート
                IXLWorksheet currentsheet = worksheet;  // 処理中シート


                //Linqで必要なデータをselect
                var outDataAll = dtZaikoIchiran.AsEnumerable()
                                 .Select(dat => new
                {
                    tanaban       = dat["棚番"],
                    maker         = dat["メーカー名"],
                    hinmei        = dat["品名"],
                    siireTanka    = (decimal)dat["仕入単価"],
                    hyokaTanka    = (decimal)dat["評価単価"],
                    tateneTanka   = (decimal)dat["建値仕入単価"],
                    zengetsu      = (decimal)dat["前月在庫"],
                    nyuko         = (decimal)dat["入庫数"],
                    syuko         = (decimal)dat["出庫数"],
                    zaiko         = (decimal)dat["現在庫数"],
                    siireKingaku  = (decimal)dat["在庫仕入金額"],
                    hyokaKingaku  = (decimal)dat["在庫評価金額"],
                    tateneKingaku = (decimal)dat["在庫建値金額"],
                    daibunrui     = dat["大分類名"],
                    eigyoshoName  = dat["営業所名"]
                }).ToList();

                // linqで在庫仕入金額、在庫評価金額、在庫建値金額の合計算出
                decimal[] decKingaku = new decimal[3];
                decKingaku[0] = outDataAll.Select(gokei => gokei.siireKingaku).Sum();
                decKingaku[1] = outDataAll.Select(gokei => gokei.hyokaKingaku).Sum();
                decKingaku[2] = outDataAll.Select(gokei => gokei.tateneKingaku).Sum();

                // リストをデータテーブルに変換
                DataTable dtChkList = pdf.ConvertToDataTable(outDataAll);

                int maxRowCnt = dtChkList.Rows.Count + 1;
                int maxColCnt = dtChkList.Columns.Count;
                int pageCnt   = 0;  // ページ(シート枚数)カウント
                int rowCnt    = 1;  // datatable処理行カウント
                int xlsRowCnt = 4;  // Excel出力行カウント(開始は出力行)
                int maxPage   = 0;  // 最大ページ数

                // ページ数計算
                //double page = 1.0 * maxRowCnt / 29;
                double page        = 1.0 * maxRowCnt / 68;
                double decimalpart = page % 1;
                if (decimalpart != 0)
                {
                    // 小数点以下が0でない場合、+1
                    maxPage = (int)Math.Floor(page) + 1;
                }
                else
                {
                    maxPage = (int)page;
                }

                // ClosedXMLで1行ずつExcelに出力
                foreach (DataRow drZaiko in dtChkList.Rows)
                {
                    // 1ページ目のシート作成
                    if (rowCnt == 1)
                    {
                        pageCnt++;

                        // タイトル出力(中央揃え、セル結合)
                        IXLCell titleCell = headersheet.Cell("A1");
                        titleCell.Value = "在 庫 一 覧 表";
                        titleCell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                        titleCell.Style.Font.FontSize        = 16;
                        headersheet.Range("A1", "M1").Merge();

                        // 営業所出力(A2のセル)
                        // 営業所コードが空でない場合
                        if (lstItem[10].Equals("1"))
                        {
                            headersheet.Cell("A2").Value = " " + drZaiko[14].ToString();
                        }
                        else
                        {
                            headersheet.Cell("A2").Value = " 本社、岐阜";
                        }

                        // 大分類名出力(C2のセル)
                        headersheet.Cell("C2").Value = " " + drZaiko[13].ToString();

                        // 在庫期間出力(M2のセル)
                        //IXLCell kikanCell = headersheet.Cell("M2");
                        IXLCell kikanCell = headersheet.Cell("L2");

                        //kikanCell.Value = "在庫期間::" +
                        //    string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[0])) + "~" +
                        //    string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[1]));
                        kikanCell.Value = "在庫年月日:" +
                                          string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[1]));
                        kikanCell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;

                        // ヘッダー出力(3行目のセル)
                        headersheet.Cell("A3").Value = "棚番";
                        headersheet.Cell("B3").Value = "メーカー名";
                        headersheet.Cell("C3").Value = "品  名 ・ 型  番";
                        headersheet.Cell("D3").Value = "仕入単価";
                        headersheet.Cell("E3").Value = "数量";  // 評価単価
                        headersheet.Cell("F3").Value = "建値仕入単価";
                        headersheet.Cell("G3").Value = "前月在庫";
                        headersheet.Cell("H3").Value = "入庫数";
                        headersheet.Cell("I3").Value = "出庫数";
                        headersheet.Cell("J3").Value = "単価";  // 現在個数
                        headersheet.Cell("K3").Value = "在庫仕入金額";
                        headersheet.Cell("L3").Value = "金額";  // 在庫評価金額
                        headersheet.Cell("M3").Value = "在庫建値金額";

                        // ヘッダー列
                        headersheet.Range("A3", "M3").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

                        // セルの周囲に罫線を引く
                        headersheet.Range("A3", "M3").Style
                        .Border.SetTopBorder(XLBorderStyleValues.Thin)
                        .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                        .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                        .Border.SetRightBorder(XLBorderStyleValues.Thin);

                        // 列幅の指定
                        headersheet.Column(1).Width  = 9;
                        headersheet.Column(2).Width  = 22;
                        headersheet.Column(3).Width  = 44;
                        headersheet.Column(4).Width  = 0;  // 13
                        headersheet.Column(5).Width  = 16;
                        headersheet.Column(6).Width  = 0;  // 13
                        headersheet.Column(7).Width  = 0;  // 9
                        headersheet.Column(8).Width  = 0;  // 7
                        headersheet.Column(9).Width  = 0;  // 7
                        headersheet.Column(10).Width = 11;
                        headersheet.Column(11).Width = 0;  // 13
                        headersheet.Column(12).Width = 17;
                        headersheet.Column(13).Width = 0;  // 13

                        headersheet.Column(4).Hide();
                        headersheet.Column(6).Hide();
                        headersheet.Column(7).Hide();
                        headersheet.Column(8).Hide();
                        headersheet.Column(9).Hide();
                        headersheet.Column(11).Hide();
                        headersheet.Column(13).Hide();

                        // フォントサイズ変更
                        headersheet.Range("B4:C71").Style.Font.FontSize = 6;

                        // 印刷体裁(A4横、印刷範囲、余白)
                        headersheet.PageSetup.PaperSize       = XLPaperSize.A4Paper;
                        headersheet.PageSetup.PageOrientation = XLPageOrientation.Portrait;
                        headersheet.PageSetup.Margins.Left    = 0.2;
                        headersheet.PageSetup.Margins.Right   = 0.2;

                        // ヘッダー部の指定(番号)
                        //headersheet.PageSetup.Header.Left.AddText("(№30)");

                        // ヘッダーシートのコピー、ヘッダー部の指定
                        pdf.sheetCopy2(ref workbook, ref headersheet, ref currentsheet, pageCnt, maxPage, strNow);
                    }

                    // 1セルずつデータ出力
                    for (int colCnt = 1; colCnt <= maxColCnt - 2; colCnt++)
                    {
                        string str = drZaiko[colCnt - 1].ToString();

                        //// 数値、金額セルの処理
                        //if (colCnt >= 7 && colCnt <= 13)
                        //{
                        //    // 3桁毎に","を挿入する
                        //    //str = string.Format("{0:#,0}", decimal.Parse(str));
                        //    currentsheet.Cell(xlsRowCnt, colCnt).Style.NumberFormat.SetFormat("#,##0");
                        //    currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        //}

                        //// 単価セルの処理
                        //if (colCnt >= 4 && colCnt <= 6)
                        //{
                        //    // 3桁毎に","を挿入する、小数点第2位まで
                        //    currentsheet.Cell(xlsRowCnt, colCnt).Style.NumberFormat.SetFormat("#,##0.00");
                        //    currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        //}

                        if (colCnt == 5)
                        {
                            currentsheet.Cell(xlsRowCnt, 10).Style.NumberFormat.SetFormat("#,##0.00");
                            currentsheet.Cell(xlsRowCnt, 10).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }
                        else if (colCnt == 10)
                        {
                            currentsheet.Cell(xlsRowCnt, 5).Style.NumberFormat.SetFormat("#,##0");
                            currentsheet.Cell(xlsRowCnt, 5).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }
                        else if (colCnt == 12)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.NumberFormat.SetFormat("#,##0");
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }

                        if (colCnt == 5)
                        {
                            currentsheet.Cell(xlsRowCnt, 10).Value = str;
                        }
                        else if (colCnt == 10)
                        {
                            currentsheet.Cell(xlsRowCnt, 5).Value = str;
                        }
                        else
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Value = str;
                        }
                    }

                    // 1行分のセルの周囲に罫線を引く
                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 13).Style
                    .Border.SetTopBorder(XLBorderStyleValues.Thin)
                    .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                    .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                    .Border.SetRightBorder(XLBorderStyleValues.Thin);

                    // 29行毎(ヘッダーを除いた行数)にシート作成
                    //if (xlsRowCnt == 32)
                    if (xlsRowCnt == 71)
                    {
                        pageCnt++;
                        if (pageCnt <= maxPage)
                        {
                            xlsRowCnt = 3;

                            // ヘッダーシートのコピー、ヘッダー部の指定
                            pdf.sheetCopy2(ref workbook, ref headersheet, ref currentsheet, pageCnt, maxPage, strNow);
                        }
                    }

                    rowCnt++;
                    xlsRowCnt++;
                }

                // 最終行を出力した後、合計行を出力
                if (dtChkList.Rows.Count > 0)
                {
                    for (int cnt = 0; cnt < 3; cnt++)
                    {
                        // 3桁毎に","を挿入する
                        currentsheet.Cell(xlsRowCnt, 11 + cnt).Value = string.Format("{0:#,0}", decKingaku[cnt]);
                        currentsheet.Cell(xlsRowCnt, 11 + cnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                    }

                    // セル結合
                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 10).Merge();
                    currentsheet.Cell(xlsRowCnt, 1).Value = "合計金額:";
                    currentsheet.Cell(xlsRowCnt, 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;

                    // 1行分のセルの周囲に罫線を引く
                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 13).Style
                    .Border.SetTopBorder(XLBorderStyleValues.Thin)
                    .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                    .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                    .Border.SetRightBorder(XLBorderStyleValues.Thin);
                }

                // ヘッダーシート削除
                headersheet.Delete();

                // workbookを保存
                string strOutXlsFile = strWorkPath + strDateTime + ".xlsx";
                workbook.SaveAs(strOutXlsFile);

                // workbookを解放
                workbook.Dispose();

                objExcel         = new Microsoft.Office.Interop.Excel.Application();
                objExcel.Visible = false;

                if (p != null)
                {
                    objExcel.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMinimized;
                }
                else
                {
                    objExcel.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMaximized;
                }

                objExcel.DisplayAlerts = false;

                objWorkBooks = objExcel.Workbooks;

                String strP = System.IO.Path.GetFullPath(strOutXlsFile);

                objWorkBook = objWorkBooks.Open(strP,         //_xslFile,     // FileName:ファイル名
                                                Type.Missing, // UpdateLinks:ファイル内の外部参照の更新方法
                                                Type.Missing, // ReadOnly:ReadOnlyにするかどうか
                                                Type.Missing, // Format: テキストファイルを開く場合に区切り文字を指定する
                                                Type.Missing, // Password:開く際にパスワードがある場合にパスワードを入力
                                                Type.Missing, // WriteResPassword:書き込む際にパスワードがある場合にパスワードを入力
                                                Type.Missing, // IgnoreReadOnlyRecommended:[読み取り専用を推奨する]チェックがオンの場合でも[読み取り専用を推奨する]メッセージを非表示
                                                Type.Missing, // Origin:テキストファイルの場合、プラットフォームを指定
                                                Type.Missing, // Delimiter:テキストファイルで且つ引数Formatが6の場合に区切り文字を指定
                                                Type.Missing, // Editable:Excel4.0アドインの場合、アドインウィンドウを出すか指定
                                                Type.Missing, // Notify:ファイルが読み取りor書き込みモードで開けない場合に通知リストに追加するか指定
                                                Type.Missing, // Converter:ファイルを開くときに最初に使用するファイルコンバーターのインデックス番号を指定
                                                Type.Missing, // AddToMru:最近使用したファイルの一覧にブックを追加するか指定
                                                Type.Missing, // Local:Excel言語設定に合わせてファイルを保存するか指定
                                                Type.Missing  // CorruptLoad:使用できる定数は[xlNormalLoad][xlRepairFile][xlExtractData]。指定がない場合のは[xlNormalLoad]になりOMを通じて開始するときに回復は行われません。
                                                );

                if (p != null)
                {
                    objWorkBook.PrintOut(Type.Missing, // From:印刷開始のページ番号
                                         Type.Missing, // To:印刷終了のページ番号
                                         1,            // Copies:印刷部数
                                         Type.Missing, // Preview:印刷プレビューをするか指定
                                         p,            // ActivePrinter:プリンターの名称
                                         Type.Missing, // PrintToFile:ファイル出力をするか指定
                                         true,         // Collate:部単位で印刷するか指定
                                         Type.Missing  // PrToFileName	:出力先ファイルの名前を指定するかどうか
                                         );
                }
                else
                {
                    objWorkBook.PrintOut(Type.Missing, // From:印刷開始のページ番号
                                         Type.Missing, // To:印刷終了のページ番号
                                         1,            // Copies:印刷部数
                                         true,         // Preview:印刷プレビューをするか指定
                                         p,            // ActivePrinter:プリンターの名称
                                         Type.Missing, // PrintToFile:ファイル出力をするか指定
                                         true,         // Collate:部単位で印刷するか指定
                                         Type.Missing  // PrToFileName	:出力先ファイルの名前を指定するかどうか
                                         );
                    objExcel.Visible = true;
                    objWorkBook.Activate();
                }

                // PDF化の処理
                //return pdf.createPdf(strOutXlsFile, strDateTime, 1);
            }
            catch
            {
                throw;
            }
            finally
            {
                // EXCEL終了処理
                if (objWorkSheet != null)
                {
                    Marshal.ReleaseComObject(objWorkSheet);     // オブジェクト参照を解放
                    objWorkSheet = null;                        // オブジェクト解放
                }

                if (objWorkBook != null)
                {
                    objWorkBook.Close(false,
                                      Type.Missing, Type.Missing); //ファイルを閉じる
                    Marshal.ReleaseComObject(objWorkBook);         // オブジェクト参照を解放
                    objWorkBook = null;                            // オブジェクト解放
                }

                if (objWorkBooks != null)
                {
                    Marshal.ReleaseComObject(objWorkBooks);     // オブジェクト参照を解放
                    objWorkBooks = null;                        // オブジェクト解放
                }
                if (objExcel != null)
                {
                    objExcel.Quit();                            // EXCELを閉じる

                    Marshal.ReleaseComObject(objExcel);         // オブジェクト参照を解放
                    objExcel = null;                            // オブジェクト解放
                }

                System.GC.Collect();                            // オブジェクトを確実に削除
            }

            try
            {
                string ret = "";

                return(ret);
            }
            catch (Exception ex)
            {
                // エラーロギング
                new CommonException(ex);
                throw;
            }
            finally
            {
                // EXCEL終了処理
                if (objWorkSheet != null)
                {
                    Marshal.ReleaseComObject(objWorkSheet);     // オブジェクト参照を解放
                    objWorkSheet = null;                        // オブジェクト解放
                }

                if (objWorkBook != null)
                {
                    objWorkBook.Close(false,
                                      Type.Missing, Type.Missing); //ファイルを閉じる
                    Marshal.ReleaseComObject(objWorkBook);         // オブジェクト参照を解放
                    objWorkBook = null;                            // オブジェクト解放
                }

                if (objWorkBooks != null)
                {
                    Marshal.ReleaseComObject(objWorkBooks);     // オブジェクト参照を解放
                    objWorkBooks = null;                        // オブジェクト解放
                }
                if (objExcel != null)
                {
                    objExcel.Quit();                            // EXCELを閉じる

                    Marshal.ReleaseComObject(objExcel);         // オブジェクト参照を解放
                    objExcel = null;                            // オブジェクト解放
                }

                System.GC.Collect();                            // オブジェクトを確実に削除
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
Exemplo n.º 13
0
    public void StandingsCalc()
    {
        MySqlCommand comm5 = new MySqlCommand("Truncate fantasy_race.raceresultsall", new MySqlConnection("server=localhost;uid=root;pwd=vvo084;"));

        comm5.Connection.Open();
        comm5.ExecuteNonQuery();
        comm5.Connection.Close();

        MySqlCommand comm1 = new MySqlCommand("Truncate fantasy_race.leaderboard", new MySqlConnection("server=localhost;uid=root;pwd=vvo084;"));

        comm1.Connection.Open();
        comm1.ExecuteNonQuery();
        comm1.Connection.Close();


        MySqlDataAdapter dar = new MySqlDataAdapter("select * from fantasy_race.raceresultsf1indy", "server=localhost;uid=root;pwd=vvo084;");
        MySqlDataAdapter dat = new MySqlDataAdapter("select * from fantasy_race.raceresultsnascara", "server=localhost;uid=root;pwd=vvo084;");
        MySqlDataAdapter das = new MySqlDataAdapter("select * from fantasy_race.raceresultsnascarb", "server=localhost;uid=root;pwd=vvo084;");
        DataTable        tb  = new DataTable();

        dar.Fill(tb);
        das.Fill(tb);
        dat.Fill(tb);

        foreach (DataRow drs in tb.Rows)
        {
            string week     = drs["Week"].ToString();
            string Circut   = drs["Circut"].ToString();
            string Team     = drs["Team"].ToString();
            string driver   = drs["Driver"].ToString();
            string position = drs["Position"].ToString();
            string points   = drs["Points"].ToString();
            string poll     = drs["Poll"].ToString();
            string Lapslead = drs["LapsLead"].ToString();

            MySqlCommand comm = new MySqlCommand("insert into fantasy_race.raceresultsall(Week,Circut,Team,Driver,Position,Points,Poll,LapsLead) values('" + week + "', '" + Circut + "', '" + Team + "', '" + driver + "', '" + position + "', '" + points + "', '" + poll + "', '" + Lapslead + "')", new MySqlConnection("server=localhost;uid=root;pwd=vvo084;"));

            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
        }

        MySqlDataAdapter da = new MySqlDataAdapter("select * from fantasy_race.teams", "server=localhost;uid=root;pwd=vvo084;");
        DataTable        t  = new DataTable();

        da.Fill(t);


        foreach (DataRow dr in t.Rows)
        {
            string teams = dr["Team"].ToString();

            string wins        = Wincount(teams);
            string poles       = pollcount(teams);
            string laps        = LapsLeadcount(teams);
            string five        = topfive(teams);
            string ten         = topten(teams);
            string dnfs        = DNFfunction(teams);
            string pointbehind = pointsbehind(teams).ToString;
            string totals      = totalpoints(teams).ToString;


            MySqlCommand comm = new MySqlCommand("insert into fantasy_race.leaderboard(Team,Behind,Wins,Poles,TopTen,TopFive,LapsLead,DNF,Points) values('" + teams + "', '" + pointbehind + "', '" + wins + "', '" + poles + "', '" + ten + "', '" + five + "', '" + laps + "', '" + dnfs + "', '" + totals + "')", new MySqlConnection("server=localhost;uid=root;pwd=vvo084;"));

            comm.Connection.Open();
            comm.ExecuteNonQuery();
            comm.Connection.Close();
        }


        MySqlDataAdapter myda = new MySqlDataAdapter("select Team,Points,Behind,Wins,Poles,TopTen,TopFive,LapsLead,DNF from fantasy_race.leaderboard order by Points desc", "server=localhost;uid=root;pwd=vvo084;");
        DataTable        lbt  = new DataTable();

        myda.Fill(lbt);
        try
        {
            StreamWriter sw = new StreamWriter("c:\\Standings.csv", false);

            //Write line 1 for column names
            string columnnames = "";
            foreach (DataColumn dc in lbt.Columns)
            {
                columnnames += "\"" + dc.ColumnName + "\",";
            }
            columnnames = columnnames.TrimEnd(',');
            sw.WriteLine(columnnames);
            //Write out the rows
            foreach (DataRow drs in lbt.Rows)
            {
                string row = "";
                foreach (DataColumn dc in lbt.Columns)
                {
                    if ((drs[dc.ColumnName]) is byte[])
                    {
                        row += "\"" + getstring(drs[dc.ColumnName]) + "\",";
                    }
                    else
                    {
                        row += "\"" + drs[dc.ColumnName].ToString() + "\",";
                    }
                }
                row = row.TrimEnd(',');
                sw.WriteLine(row);
            }
            sw.Close();
            string       msg      = null;
            string       title    = null;
            MsgBoxStyle  style    = default(MsgBoxStyle);
            MsgBoxResult response = default(MsgBoxResult);

            msg = "Your file is done. Would you like to open?";
            // Define message.
            style = MsgBoxStyle.YesNo;
            title = "MsgBox";
            // Define title.
            //Display message.
            response = Interaction.MsgBox(msg, style, title);
            if (response == MsgBoxResult.Yes)
            {
                Microsoft.Office.Interop.Excel.Application excel = default(Microsoft.Office.Interop.Excel.Application);

                Microsoft.Office.Interop.Excel.Workbook wb = default(Microsoft.Office.Interop.Excel.Workbook);


                try
                {
                    excel         = new Microsoft.Office.Interop.Excel.Application();
                    wb            = excel.Workbooks.Open("c:\\\\Standings.csv");
                    excel.Visible = true;
                    wb.Activate();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error accessing Excel: " + ex.ToString());
                }
            }
            if (response == MsgBoxResult.Yes)
            {
                return;
            }
        }
        catch
        {
            string       msg      = null;
            string       title    = null;
            MsgBoxStyle  style    = default(MsgBoxStyle);
            MsgBoxResult response = default(MsgBoxResult);

            msg = "file must be colsed";
            // Define message.
            style = MsgBoxStyle.DefaultButton1;
            title = "MsgBox";
            // Define title.
            //Display message.
            response = Interaction.MsgBox(msg, style, title);

            if (response == MsgBoxResult.Ok)
            {
                return;
            }
        }
    }
        ///// <summary>
        ///// judTanaData
        ///// 棚卸データの取得、判定
        ///// </summary>
        //public int judTanaData(string strYMD)
        //{
        //    //本社データ確認用
        //    string strSQLHonSel = "";
        //    //本社データ確認用
        //    string strSQLGifuSel = "";

        //    //取り出したデータの確保用
        //    DataTable dtGetData = new DataTable();

        //    DBConnective dbconnective = new DBConnective();
        //    try
        //    {
        //        strSQLHonSel = "SELECT COUNT(*) FROM 棚卸記入表 ";
        //        strSQLHonSel = strSQLHonSel + " WHERE 営業所コード='0001' ";
        //        strSQLHonSel = strSQLHonSel + " AND 棚卸年月日='" + strYMD + "' ";

        //        // 本社棚卸データの検索を実行
        //        dtGetData = dbconnective.ReadSql(strSQLHonSel);

        //        //本社棚卸データがない場合
        //        if (dtGetData.Rows[0][0].ToString() == "0")
        //        {
        //            return (1);
        //        }

        //        strSQLGifuSel = "SELECT COUNT(*) FROM 棚卸記入表 ";
        //        strSQLGifuSel = strSQLGifuSel + " WHERE 営業所コード='0002' ";
        //        strSQLGifuSel = strSQLGifuSel + " AND 棚卸年月日='" + strYMD + "' ";

        //        // 本社棚卸データの検索を実行
        //        dtGetData = dbconnective.ReadSql(strSQLGifuSel);

        //        //本社棚卸データがない場合
        //        if (dtGetData.Rows[0][0].ToString() == "0")
        //        {
        //            return (2);
        //        }
        //        return (3);
        //    }
        //    catch
        //    {
        //        throw;
        //    }
        //    finally
        //    {
        //        dbconnective.DB_Disconnect();
        //    }
        //}

        ///// <summary>
        ///// updTanaData
        ///// 棚卸データの更新
        ///// </summary>
        //public void updTanaData(string strYMD, string strUser)
        //{
        //    DBConnective dbconnective = new DBConnective();
        //    try
        //    {
        //        // トランザクション開始
        //        dbconnective.BeginTrans();

        //        // 棚卸更新_PROC(本社)を実行
        //        dbconnective.RunSql("棚卸更新_PROC '" + strYMD + "','" +
        //                                                  "0001" + "','" +
        //                                                  strUser + "'");

        //        // 棚卸更新_PROC(岐阜)を実行
        //        dbconnective.RunSql("棚卸更新_PROC '" + strYMD + "','" +
        //                                                  "0002" + "','" +
        //                                                  strUser + "'");

        //        // 棚卸更新_補足追加_PROCを実行
        //        dbconnective.RunSql("棚卸更新_補足追加_PROC '" + strYMD + "','" +
        //                                                  strUser + "'");

        //        // コミット
        //        dbconnective.Commit();

        //    }
        //    catch (Exception ex)
        //    {
        //        // ロールバック処理
        //        dbconnective.Rollback();
        //        throw (ex);
        //    }
        //    finally
        //    {
        //        dbconnective.DB_Disconnect();
        //    }
        //}

        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtTanaorosi">
        ///     棚卸記入表のデータテーブル</param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtTanaorosi, List <string> lstItem, string p)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strFilePath = "./Template/F0570_TanaoroshiPreSheet.xlsx";
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            Microsoft.Office.Interop.Excel.Application objExcel     = null;
            Microsoft.Office.Interop.Excel.Workbooks   objWorkBooks = null;
            Microsoft.Office.Interop.Excel.Workbook    objWorkBook  = null;
            Microsoft.Office.Interop.Excel.Worksheet   objWorkSheet = null;
            Microsoft.Office.Interop.Excel.Range       objRange     = null;

            string    strOutXlsFile = "";
            CreatePdf pdf           = null;

            try
            {
                pdf = new CreatePdf();

                //Linqで必要なデータをselect
                var outDataAll = dtTanaorosi.AsEnumerable()
                                 .Select(dat => new
                {
                    tanaban       = dat["棚番"],
                    maker         = dat["メーカー名"],
                    kataban       = dat["品名型番"],
                    zaiko         = (decimal)dat["指定日在庫"],
                    suryo         = (decimal)dat["棚卸数量"],
                    daibunruiCd   = dat["大分類コード"],
                    eigyo         = dat["営業所名"],
                    daibunruiName = dat["大分類名"],
                    chubunruiName = dat["中分類名"]
                }).ToList();

                // リストをデータテーブルに変換
                DataTable dtChkList = pdf.ConvertToDataTable(outDataAll);

                // excelのインスタンス生成
                XLWorkbook   workbook       = new XLWorkbook(strFilePath, XLEventTracking.Disabled);
                IXLWorksheet templatesheet1 = workbook.Worksheet(1); // テンプレートシート
                IXLWorksheet currentsheet   = null;                  // 処理中シート

                int pageCnt   = 0;                                   // ページ(シート枚数)カウント
                int xlsRowCnt = 6;                                   // Excel出力行カウント(開始は出力行)

                templatesheet1.CopyTo("Page" + pageCnt.ToString());
                currentsheet = workbook.Worksheet(workbook.Worksheets.Count);

                currentsheet.Cell(2, "A").Value = "棚卸プレシート";
                currentsheet.Cell(4, "A").Value = "  " + dtChkList.Rows[0][6].ToString() + "    " + dtChkList.Rows[0][7].ToString().Trim();
                currentsheet.Cell(4, "E").Value = "棚卸日:" + string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[0]));

                string strDaibunruiCd = "";

                foreach (DataRow drTanaorosi in dtChkList.Rows)
                {
                    // 大分類コードが違う場合
                    //if (!string.IsNullOrWhiteSpace(strDaibunruiCd) && !strDaibunruiCd.Equals(drTanaorosi[5].ToString()))
                    if (!string.IsNullOrWhiteSpace(strDaibunruiCd) && !strDaibunruiCd.Equals(drTanaorosi[0].ToString()))
                    {
                        pageCnt++;
                        xlsRowCnt = 6;
                        //strDaibunruiCd = drTanaorosi[5].ToString();

                        // テンプレートシートからコピー
                        templatesheet1.CopyTo("Page" + pageCnt.ToString());
                        currentsheet = workbook.Worksheet(workbook.Worksheets.Count);

                        currentsheet.Cell(2, "A").Value = "棚卸プレシート";
                        currentsheet.Cell(4, "A").Value = "  " + drTanaorosi[6].ToString() + "    " + drTanaorosi[7].ToString().Trim();
                        currentsheet.Cell(4, "E").Value = "棚卸日:" + string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[0]));
                    }

                    if (xlsRowCnt >= 51)
                    {
                        pageCnt++;
                        xlsRowCnt = 6;
                        //strDaibunruiCd = drTanaorosi[5].ToString();

                        // テンプレートシートからコピー
                        templatesheet1.CopyTo("Page" + pageCnt.ToString());
                        currentsheet = workbook.Worksheet(workbook.Worksheets.Count);

                        currentsheet.Cell(2, "A").Value = "棚卸プレシート";
                        currentsheet.Cell(4, "A").Value = "  " + drTanaorosi[6].ToString() + "    " + drTanaorosi[7].ToString().Trim();
                        currentsheet.Cell(4, "E").Value = "棚卸日:" + string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[0]));
                    }

                    strDaibunruiCd = drTanaorosi[5].ToString();
                    strDaibunruiCd = drTanaorosi[0].ToString();

                    currentsheet.Cell(xlsRowCnt, "A").Value = drTanaorosi[0].ToString();
                    currentsheet.Cell(xlsRowCnt, "B").Value = drTanaorosi[1].ToString();
                    currentsheet.Cell(xlsRowCnt, "C").Value = drTanaorosi[2].ToString();
                    currentsheet.Cell(xlsRowCnt, "D").Value = drTanaorosi[3].ToString();
                    currentsheet.Cell(xlsRowCnt, "E").Value = drTanaorosi[4].ToString();

                    xlsRowCnt++;
                }

                // テンプレートシート削除
                templatesheet1.Delete();

                // ページ数設定
                for (pageCnt = 1; pageCnt <= workbook.Worksheets.Count; pageCnt++)
                {
                    string s = "'" + pageCnt.ToString() + "/" + (workbook.Worksheets.Count).ToString();
                    workbook.Worksheet(pageCnt).Cell("E1").Value = s;      // No.
                }

                // workbookを保存
                strOutXlsFile = strWorkPath + strDateTime + ".xlsx";
                workbook.SaveAs(strOutXlsFile);

                // workbookを解放
                workbook.Dispose();

                objExcel         = new Microsoft.Office.Interop.Excel.Application();
                objExcel.Visible = false;

                if (p != null)
                {
                    objExcel.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMinimized;
                }
                else
                {
                    objExcel.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMaximized;
                }

                objExcel.DisplayAlerts = false;

                objWorkBooks = objExcel.Workbooks;

                String strP = System.IO.Path.GetFullPath(strOutXlsFile);

                objWorkBook = objWorkBooks.Open(strP,         //_xslFile,     // FileName:ファイル名
                                                Type.Missing, // UpdateLinks:ファイル内の外部参照の更新方法
                                                Type.Missing, // ReadOnly:ReadOnlyにするかどうか
                                                Type.Missing, // Format: テキストファイルを開く場合に区切り文字を指定する
                                                Type.Missing, // Password:開く際にパスワードがある場合にパスワードを入力
                                                Type.Missing, // WriteResPassword:書き込む際にパスワードがある場合にパスワードを入力
                                                Type.Missing, // IgnoreReadOnlyRecommended:[読み取り専用を推奨する]チェックがオンの場合でも[読み取り専用を推奨する]メッセージを非表示
                                                Type.Missing, // Origin:テキストファイルの場合、プラットフォームを指定
                                                Type.Missing, // Delimiter:テキストファイルで且つ引数Formatが6の場合に区切り文字を指定
                                                Type.Missing, // Editable:Excel4.0アドインの場合、アドインウィンドウを出すか指定
                                                Type.Missing, // Notify:ファイルが読み取りor書き込みモードで開けない場合に通知リストに追加するか指定
                                                Type.Missing, // Converter:ファイルを開くときに最初に使用するファイルコンバーターのインデックス番号を指定
                                                Type.Missing, // AddToMru:最近使用したファイルの一覧にブックを追加するか指定
                                                Type.Missing, // Local:Excel言語設定に合わせてファイルを保存するか指定
                                                Type.Missing  // CorruptLoad:使用できる定数は[xlNormalLoad][xlRepairFile][xlExtractData]。指定がない場合のは[xlNormalLoad]になりOMを通じて開始するときに回復は行われません。
                                                );

                if (p != null)
                {
                    objWorkBook.PrintOut(Type.Missing, // From:印刷開始のページ番号
                                         Type.Missing, // To:印刷終了のページ番号
                                         1,            // Copies:印刷部数
                                         Type.Missing, // Preview:印刷プレビューをするか指定
                                         p,            // ActivePrinter:プリンターの名称
                                         Type.Missing, // PrintToFile:ファイル出力をするか指定
                                         true,         // Collate:部単位で印刷するか指定
                                         Type.Missing  // PrToFileName	:出力先ファイルの名前を指定するかどうか
                                         );
                }
                else
                {
                    objWorkBook.PrintOut(Type.Missing, // From:印刷開始のページ番号
                                         Type.Missing, // To:印刷終了のページ番号
                                         1,            // Copies:印刷部数
                                         true,         // Preview:印刷プレビューをするか指定
                                         p,            // ActivePrinter:プリンターの名称
                                         Type.Missing, // PrintToFile:ファイル出力をするか指定
                                         true,         // Collate:部単位で印刷するか指定
                                         Type.Missing  // PrToFileName	:出力先ファイルの名前を指定するかどうか
                                         );
                    objExcel.Visible = true;
                    objWorkBook.Activate();
                }
            }
            catch (Exception ex)
            {
                // エラーロギング
                new CommonException(ex);
                throw;
            }
            finally
            {
                // EXCEL終了処理
                if (objWorkSheet != null)
                {
                    Marshal.ReleaseComObject(objWorkSheet);     // オブジェクト参照を解放
                    objWorkSheet = null;                        // オブジェクト解放
                }

                if (objWorkBook != null)
                {
                    objWorkBook.Close(false,
                                      Type.Missing, Type.Missing); //ファイルを閉じる
                    Marshal.ReleaseComObject(objWorkBook);         // オブジェクト参照を解放
                    objWorkBook = null;                            // オブジェクト解放
                }

                if (objWorkBooks != null)
                {
                    Marshal.ReleaseComObject(objWorkBooks);     // オブジェクト参照を解放
                    objWorkBooks = null;                        // オブジェクト解放
                }
                if (objExcel != null)
                {
                    objExcel.Quit();                            // EXCELを閉じる

                    Marshal.ReleaseComObject(objExcel);         // オブジェクト参照を解放
                    objExcel = null;                            // オブジェクト解放
                }

                System.GC.Collect();                            // オブジェクトを確実に削除
            }

            //for (int i = 0; i < objWorkBook.Sheets.Count; i++)
            //{
            //    objWorkSheet = objWorkBook.Sheets[i + 1];

            //    if (p != null)
            //    {
            //        objWorkSheet.PrintOut(Type.Missing, // From:印刷開始のページ番号
            //                          Type.Missing, // To:印刷終了のページ番号
            //                          1,            // Copies:印刷部数
            //                          Type.Missing, // Preview:印刷プレビューをするか指定
            //                          p, // ActivePrinter:プリンターの名称
            //                          Type.Missing, // PrintToFile:ファイル出力をするか指定
            //                          true,         // Collate:部単位で印刷するか指定
            //                          Type.Missing  // PrToFileName	:出力先ファイルの名前を指定するかどうか
            //                          );
            //    }
            //}

            try {
                string ret = "";
                // PDF化の処理
                //if (p == null)
                //{
                //    ret = pdf.createPdf(strOutXlsFile, strDateTime, 0);
                //}
                //return pdf.createPdf(strOutXlsFile, strDateTime, 0);
                return(ret);
            }
            catch (Exception ex)
            {
                // エラーロギング
                new CommonException(ex);
                throw;
            }
            finally
            {
                // EXCEL終了処理
                if (objWorkSheet != null)
                {
                    Marshal.ReleaseComObject(objWorkSheet);     // オブジェクト参照を解放
                    objWorkSheet = null;                        // オブジェクト解放
                }

                if (objWorkBook != null)
                {
                    objWorkBook.Close(false,
                                      Type.Missing, Type.Missing); //ファイルを閉じる
                    Marshal.ReleaseComObject(objWorkBook);         // オブジェクト参照を解放
                    objWorkBook = null;                            // オブジェクト解放
                }

                if (objWorkBooks != null)
                {
                    Marshal.ReleaseComObject(objWorkBooks);     // オブジェクト参照を解放
                    objWorkBooks = null;                        // オブジェクト解放
                }
                if (objExcel != null)
                {
                    objExcel.Quit();                            // EXCELを閉じる

                    Marshal.ReleaseComObject(objExcel);         // オブジェクト参照を解放
                    objExcel = null;                            // オブジェクト解放
                }

                System.GC.Collect();                            // オブジェクトを確実に削除
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }