コード例 #1
0
        public static async Task CreatePdfImpl(string conversionId, PdfParameters parameters)
        {
            try
            {
                var pdf = await CreatePdf.CreatePdfSync(parameters);

                lock (Jobs)
                    lock (_pdfs)
                    {
                        Jobs[conversionId].status = ConversionJob.Status.Done;
                        _pdfs.Add(conversionId, pdf);
                    }
            }
            catch (Exception e)
            {
                Console.WriteLine($"{conversionId}: Exception in CreatePdf.CreatePdfSync:");
                Console.WriteLine(e);
                lock (Jobs)
                {
                    if (Jobs.ContainsKey(conversionId))
                    {
                        Jobs[conversionId].status = ConversionJob.Status.Error;
                    }
                }
            }
        }
コード例 #2
0
        public async Task <IActionResult> CreatePdfSync([FromBody] PdfParameters parameters)
        {
            var pdf = await CreatePdf.CreatePdfSync(parameters);

            return(new FileStreamResult(pdf, "application/pdf")
            {
                FileDownloadName = "document.pdf"
            });
        }
コード例 #3
0
 private void bngenpdf_Click(object sender, EventArgs e)
 {
     if (sFD1.ShowDialog() == DialogResult.OK)
     {
         CreatePdf mypdf = new CreatePdf();
         mypdf.CreatePdfDocument(sFD1.FileName);
         mypdf.AddHeader("Offene Projekte laut Angebot");
         mypdf.addTable(5, "Offene Projekte", values);
         mypdf.AddsmallHeader("Anzahl offener Projekte: " + anz);
         mypdf.ClosePdf();
     }
 }
コード例 #4
0
 private void bngen_Click(object sender, EventArgs e)
 {
     if (sFD1.ShowDialog() == DialogResult.OK)
     {
         CreatePdf mypdf = new CreatePdf();
         mypdf.CreatePdfDocument(sFD1.FileName);
         mypdf.AddHeader("Stundensatz pro Projekt");
         mypdf.addTable(5, "Projekte", projekte);
         mypdf.AddsmallHeader("Durchschnittlicher Stundensatz: " + tbstdsatz.Text);
         mypdf.ClosePdf();
     }
 }
コード例 #5
0
 private void bn_createpdf_Click(object sender, EventArgs e)
 {
     if (sFD1.ShowDialog() == DialogResult.OK)
     {
         CreatePdf mypdf = new CreatePdf();
         mypdf.CreatePdfDocument(sFD1.FileName);
         mypdf.AddHeader("Einnahmen und Ausgaben: "+ dtp1.Value.ToString("MMMM") + " " + dtp1.Value.Year);
         mypdf.addTable(4, "Einnahmen", einnahmen);
         mypdf.addTable(4, "Ausgaben", ausgaben);
         mypdf.ClosePdf();
     }
 }
コード例 #6
0
 public Createtext(DataSet ds, string name, int agentno, DataSet ds1, CreatePdf Cpdf)
 {
     this.ds           = ds;
     this.name         = name;
     this.agentno2     = agentno;
     this.ds1          = ds1;
     this._companyName = Cpdf.CompanyName;
     this._plantName   = Cpdf.PlantName;
     this._date1       = Cpdf.Date1;
     this._date2       = Cpdf.Date2;
     this._Imagepath   = Cpdf.Imagepath;
     this._routeid     = Cpdf.Routeid;
 }
コード例 #7
0
ファイル: Bill.aspx.cs プロジェクト: vyshnavi-bit/Procurement
    protected void Button2_Click(object sender, EventArgs e)
    {
        iframShowFiles.Visible = true;
        DataSet   ds = new DataSet();
        DataTable dt = new DataTable();

        dt = Getdata(TextBox3.Text, TextBox4.Text, route_id, plant_Code, Company_code);
        ds.Tables.Add(dt);
        if (dt.Rows.Count > 0)
        {
            ///
            DataSet   ds1 = new DataSet();
            DataTable dt1 = new DataTable();
            dt1 = Getdata1(TextBox3.Text, TextBox4.Text, route_id, plant_Code, Company_code);
            ds1.Tables.Add(dt1);

            ///

            // int i = 1;
            //  for (i = 1; i <= dt1.Rows.Count; i++)
            //{
            int    i     = 1;
            string na    = Convert.ToString(i);
            string name1 = Server.MapPath(".") + "/kk/" + plant_Code.Trim() + '_' + TextBox3.Text.Trim() + '_' + TextBox4.Text.Trim() + '_' + "Bill";
            name2 = Server.MapPath(".") + "/kk/" + "Nasa-logo1.gif";
            //name2 = Server.MapPath(".") + "/kk/" + "onezero .jpg";
            SETBO();
            CreatePdf pd = new CreatePdf(ds, name1, i, ds1, Cpdf);

            pd.Execute1();

            string fileName          = plant_Code.Trim() + '_' + TextBox3.Text.Trim() + '_' + TextBox4.Text.Trim() + '_' + "Bill.pdf";
            string surverUrl         = Request.Url.AbsoluteUri.Split('/')[0] + "//" + Request.Url.Authority + Request.ApplicationPath.TrimEnd('/') + "/";
            string fileStoreLocation = "kk/";
            string downloadFilePath  = surverUrl + fileStoreLocation + fileName;
            iframShowFiles.Attributes.Add("src", downloadFilePath);
            //object TargetFile = name1 + ".pdf".ToString();
            //System.IO.FileInfo file = new System.IO.FileInfo(TargetFile.ToString());

            //if (File.Exists(TargetFile.ToString()))
            //{
            //    File.Delete(TargetFile.ToString());
            //}
            name1 = string.Empty;
        }
        else
        {
            iframShowFiles.Visible = false;
            WebMsgBox.Show("Report Not Found...");
        }
    }
コード例 #8
0
 private void bngenpdf_Click(object sender, EventArgs e)
 {
     if (sFD1.ShowDialog() == DialogResult.OK)
     {
         CreatePdf mypdf = new CreatePdf();
         mypdf.CreatePdfDocument(sFD1.FileName);
         mypdf.AddHeader("Prognostizierter Jahresumsatz laut Angebot");
         mypdf.addTable(4, "Angebote", values);
         mypdf.AddsmallHeader("Ist-Stand Angebote:");
         mypdf.AddText("Anzahl Angebote: " + tbianzang.Text);
         mypdf.AddText("Summe Angebote: " + tbisumang.Text);
         mypdf.AddsmallHeader("Prognose für das Jahr " + DateTime.Now.Year + ":");
         mypdf.AddText("Anzahl Angebote: " + tbanzangebote.Text);
         mypdf.AddText("Summe Angebote: " + tbsumangebote.Text);
         mypdf.ClosePdf();
     }
 }
コード例 #9
0
ファイル: Bill.aspx.cs プロジェクト: vyshnavi-bit/Procurement
    protected void Button1_Click(object sender, EventArgs e)
    {
        iframShowFiles.Visible = false;
        DataSet   ds = new DataSet();
        DataTable dt = new DataTable();

        plant_Code = Session["User_ID"].ToString();
        dt         = Getdata(TextBox3.Text, TextBox4.Text, route_id, plant_Code, Company_code);
        ds.Tables.Add(dt);
        if (dt.Rows.Count > 0)
        {
            ///
            DataSet   ds1 = new DataSet();
            DataTable dt1 = new DataTable();
            dt1 = Getdata1(TextBox3.Text, TextBox4.Text, route_id, plant_Code, Company_code);
            ds1.Tables.Add(dt1);

            ///

            // int i = 1;
            //  for (i = 1; i <= dt1.Rows.Count; i++)
            //{

            int    i     = 1;
            string na    = Convert.ToString(i);
            string name1 = Server.MapPath(".") + "/kk/" + plant_Code.Trim() + "From" + TextBox3.Text.Trim() + "to" + TextBox4.Text.Trim() + '_' + "Bill";
            name2 = Server.MapPath(".") + "/kk/" + "Nasa-logo1.gif";
            //name2 = Server.MapPath(".") + "/kk/" + "onezero .jpg";
            SETBO();
            CreatePdf pd = new CreatePdf(ds, name1, i, ds1, Cpdf);
            pd.Execute();
            name1 = string.Empty;
        }
        else
        {
            uscMsgBox1.AddMessage("Report Not Found", MessageBoxUsc_Message.enmMessageType.Info);
        }
    }
コード例 #10
0
        /// -----------------------------------------------------------------------------
        /// <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);
                }
            }
        }
コード例 #11
0
 private void btngenpdf_Click(object sender, EventArgs e)
 {
     if (sFD1.ShowDialog() == DialogResult.OK)
     {
         CreatePdf mypdf = new CreatePdf();
         mypdf.CreatePdfDocument(sFD1.FileName);
         mypdf.AddHeader("Offene Rechnungen");
         mypdf.addTable(4, "Offene Eingangsrechnungen", eingangsr);
         mypdf.addTable(4, "Offene Ausgangsrechnungen", ausgangsr);
         mypdf.ClosePdf();
     }
 }
コード例 #12
0
        ///<summary>
        ///     F10:Excel出力
        ///</summary>
        private void exportXls()
        {
            // SaveFileDialogクラスのインスタンスを作成
            SaveFileDialog sfd = new SaveFileDialog();

            // ファイル名の指定
            sfd.FileName = "得意先売上検収入力_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xlsx";
            // デフォルトパス取得(デスクトップ)
            string Init_dir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            //はじめに表示されるフォルダを指定する
            sfd.InitialDirectory = Init_dir;
            // ファイルフィルタの設定
            sfd.Filter = "すべてのファイル(*.*)|*.*";


            //年月日の日付フォーマット後を入れる用
            string strYMDformat = "";

            //待機状態
            Cursor.Current = Cursors.WaitCursor;

            //得意先が空の場合
            if (labelSet_Tokuisaki.codeTxt.blIsEmpty() == false)
            {
                BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_INPUT, "得意先を指定してください ", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                basemessagebox.ShowDialog();

                labelSet_Tokuisaki.Focus();

                return;
            }

            //検索開始年月日に記入がある場合
            if (txtDenpyoYMDStart.blIsEmpty())
            {
                //日付フォーマット生成、およびチェック
                strYMDformat = txtDenpyoYMDStart.chkDateDataFormat(txtDenpyoYMDStart.Text);

                //検索開始年月日の日付チェック
                if (strYMDformat == "")
                {
                    // メッセージボックスの処理、項目が日付でない場合のウィンドウ(OK)
                    BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_INPUT, "入力された日付が正しくありません。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                    basemessagebox.ShowDialog();

                    txtDenpyoYMDStart.Focus();

                    return;
                }
                else
                {
                    txtDenpyoYMDStart.Text = strYMDformat;
                }
            }

            //検索終了年月日に記入がある場合
            if (txtDenpyoYMDEnd.blIsEmpty())
            {
                //初期化
                strYMDformat = "";

                //日付フォーマット生成、およびチェック
                strYMDformat = txtDenpyoYMDEnd.chkDateDataFormat(txtDenpyoYMDEnd.Text);

                //検索終了年月日の日付チェック
                if (strYMDformat == "")
                {
                    // メッセージボックスの処理、項目が日付でない場合のウィンドウ(OK)
                    BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_INPUT, "入力された日付が正しくありません。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                    basemessagebox.ShowDialog();

                    txtDenpyoYMDEnd.Focus();

                    return;
                }
                else
                {
                    txtDenpyoYMDEnd.Text = strYMDformat;
                }
            }

            //大分類チェック
            if (labelSet_Daibunrui.chkTxtDaibunrui())
            {
                labelSet_Daibunrui.Focus();
                return;
            }

            //中分類チェック
            if (labelSet_Chubunrui.chkTxtChubunrui(labelSet_Daibunrui.CodeTxtText))
            {
                labelSet_Chubunrui.Focus();
                return;
            }

            try
            {
                A0660_TokuisakiUriageKakunin_B siirekakuninB = new A0660_TokuisakiUriageKakunin_B();

                // 検索文字列格納用
                string[] arrSerach = new string[7];
                // 出力順条件取得用
                string[] arrOrder = new string[2];
                // 表示条件取得用
                string[] arrDisplay = new string[3];

                arrSerach[0] = labelSet_Tokuisaki.CodeTxtText;                   // 得意先コード
                arrSerach[1] = txtDenpyoYMDStart.Text;                           // 伝票年月日start
                arrSerach[2] = txtDenpyoYMDEnd.Text;                             // 伝票年月日end
                arrSerach[3] = labelSet_Daibunrui.CodeTxtText;                   // 大分類コード
                arrSerach[4] = labelSet_Chubunrui.CodeTxtText;                   // 中分類コード
                arrSerach[5] = txtKataban.Text;                                  // 品名・型番
                arrSerach[6] = txtBiko.Text;                                     // 備考

                arrOrder[0] = radOutOrder.radbtn0.Checked.ToString().ToUpper();  // 出力順 日付・伝票番号順
                arrOrder[1] = radOutOrder.radbtn1.Checked.ToString().ToUpper();  // 出力順 型番・日付順

                arrDisplay[0] = radDisplay.radbtn0.Checked.ToString().ToUpper(); // 表示 すべて
                arrDisplay[1] = radDisplay.radbtn1.Checked.ToString().ToUpper(); // 表示 未検収
                arrDisplay[2] = radDisplay.radbtn2.Checked.ToString().ToUpper(); // 表示 検収済

                // 検索実行
                DataTable dtUriagekensyu = siirekakuninB.getSiireData(arrSerach, arrOrder, arrDisplay);

                // カーソルをデフォルトに戻す
                this.Cursor = Cursors.Default;

                if (dtUriagekensyu.Rows.Count > 0)
                {
                    //ダイアログを表示する
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        //待機状態
                        Cursor.Current = Cursors.WaitCursor;

                        CreatePdf cpdf = new CreatePdf();

                        // 出力するヘッダを設定
                        string[] header =
                        {
                            "日付",
                            "伝No.",
                            "メーカー",
                            "品名・型式",
                            "数量",
                            "売上単価",
                            "売上金額",
                            "備考",
                            "検収",
                        };

                        // Linqで出力対象の項目をSelect
                        // カラム名は以下のようにつける(カラム名でフォーマットを判断するため)
                        // 金額関係:***kingaku
                        // 単価関係:***tanka
                        // 原価:***genka
                        // 数量:***suryo
                        var outDat = dtUriagekensyu.AsEnumerable()
                                     .Select(dat => new
                        {
                            denYmd        = dat["伝票年月日"],
                            denNo         = dat["伝票番号"],
                            maker         = dat["メーカー"],
                            hinmei        = dat["品名型式"],
                            suryo         = dat["数量"],
                            uriagetanka   = dat["売上単価"],
                            uriagekingaku = dat["売上金額"],
                            biko          = dat["備考"],
                            kensyu        = dat["検収状態"]
                        }).ToList();

                        // listをDataTableに変換
                        DataTable dtUriKensyuList = cpdf.ConvertToDataTable(outDat);

                        string outFile = sfd.FileName;

                        cpdf.DtToXls(dtUriKensyuList, "得意先売上検収入力", outFile, 3, 1, header);

                        this.Cursor = Cursors.Default;

                        // メッセージボックスの処理、Excel作成完了の場合のウィンドウ(OK)
                        BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excelファイルを作成しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_INFOMATION);
                        basemessagebox.ShowDialog();
                    }
                }
                else
                {
                    // メッセージボックスの処理、項目が空の場合のウィンドウ(OK)
                    BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_INPUT, "対象のデータはありません", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                    basemessagebox.ShowDialog();
                    return;
                }
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;

                // エラーロギング
                new CommonException(ex);

                // Excel出力失敗メッセージ
                BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excel出力に失敗しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                basemessagebox.ShowDialog();

                return;
            }
        }
コード例 #13
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="lstDtSuiihyo">
        ///     推移表のデータテーブルのリスト</param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(List <DataTable> lstDtSuiihyo, List <string> lstItem)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            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; // 処理中シート

                int maxPage;                           // 最大ページ数

                // リストに格納しているデータテーブルすべてを実行
                for (int listCnt = 0; listCnt < lstDtSuiihyo.Count; listCnt++)
                {
                    DataTable dtSuiihyo = lstDtSuiihyo[listCnt];

                    if (dtSuiihyo == null || dtSuiihyo.Rows.Count == 0)
                    {
                        break;
                    }

                    //Linqで必要なデータをselect
                    var outDataAll = dtSuiihyo.AsEnumerable()
                                     .Select(dat => new
                    {
                        tantoCd         = dat["担当者コード"],
                        tantoName       = dat["担当者名"],
                        tokuisakiCd     = dat["得意先コード"],
                        tokuisakiName   = dat["得意先名"],
                        zenUriage1      = (decimal)dat["前売上1"],
                        zenUriage2      = (decimal)dat["前売上2"],
                        zenUriage3      = (decimal)dat["前売上3"],
                        zenUriage4      = (decimal)dat["前売上4"],
                        zenUriage5      = (decimal)dat["前売上5"],
                        zenUriage6      = (decimal)dat["前売上6"],
                        zenUriage7      = (decimal)dat["前売上7"],
                        zenUriage8      = (decimal)dat["前売上8"],
                        zenUriage9      = (decimal)dat["前売上9"],
                        zenUriage10     = (decimal)dat["前売上10"],
                        zenUriage11     = (decimal)dat["前売上11"],
                        zenUriage12     = (decimal)dat["前売上12"],
                        zenUriageGoukei = (decimal)dat["前売上合計"],
                        honUriage1      = (decimal)dat["本売上1"],
                        honUriage2      = (decimal)dat["本売上2"],
                        honUriage3      = (decimal)dat["本売上3"],
                        honUriage4      = (decimal)dat["本売上4"],
                        honUriage5      = (decimal)dat["本売上5"],
                        honUriage6      = (decimal)dat["本売上6"],
                        honUriage7      = (decimal)dat["本売上7"],
                        honUriage8      = (decimal)dat["本売上8"],
                        honUriage9      = (decimal)dat["本売上9"],
                        honUriage10     = (decimal)dat["本売上10"],
                        honUriage11     = (decimal)dat["本売上11"],
                        honUriage12     = (decimal)dat["本売上12"],
                        honUriageGoukei = (decimal)dat["本売上合計"]
                    }).ToList();

                    // linqで前売上1~前売上12、前売上合計、本売上1~本売上12、本売上合計の合計算出
                    decimal[,] decKingaku = new decimal[2, 13];
                    decKingaku[0, 0]      = outDataAll.Select(gokei => gokei.zenUriage1).Sum();
                    decKingaku[0, 1]      = outDataAll.Select(gokei => gokei.zenUriage2).Sum();
                    decKingaku[0, 2]      = outDataAll.Select(gokei => gokei.zenUriage3).Sum();
                    decKingaku[0, 3]      = outDataAll.Select(gokei => gokei.zenUriage4).Sum();
                    decKingaku[0, 4]      = outDataAll.Select(gokei => gokei.zenUriage5).Sum();
                    decKingaku[0, 5]      = outDataAll.Select(gokei => gokei.zenUriage6).Sum();
                    decKingaku[0, 6]      = outDataAll.Select(gokei => gokei.zenUriage7).Sum();
                    decKingaku[0, 7]      = outDataAll.Select(gokei => gokei.zenUriage8).Sum();
                    decKingaku[0, 8]      = outDataAll.Select(gokei => gokei.zenUriage9).Sum();
                    decKingaku[0, 9]      = outDataAll.Select(gokei => gokei.zenUriage10).Sum();
                    decKingaku[0, 10]     = outDataAll.Select(gokei => gokei.zenUriage11).Sum();
                    decKingaku[0, 11]     = outDataAll.Select(gokei => gokei.zenUriage12).Sum();
                    decKingaku[0, 12]     = outDataAll.Select(gokei => gokei.zenUriageGoukei).Sum();
                    decKingaku[1, 0]      = outDataAll.Select(gokei => gokei.honUriage1).Sum();
                    decKingaku[1, 1]      = outDataAll.Select(gokei => gokei.honUriage2).Sum();
                    decKingaku[1, 2]      = outDataAll.Select(gokei => gokei.honUriage3).Sum();
                    decKingaku[1, 3]      = outDataAll.Select(gokei => gokei.honUriage4).Sum();
                    decKingaku[1, 4]      = outDataAll.Select(gokei => gokei.honUriage5).Sum();
                    decKingaku[1, 5]      = outDataAll.Select(gokei => gokei.honUriage6).Sum();
                    decKingaku[1, 6]      = outDataAll.Select(gokei => gokei.honUriage7).Sum();
                    decKingaku[1, 7]      = outDataAll.Select(gokei => gokei.honUriage8).Sum();
                    decKingaku[1, 8]      = outDataAll.Select(gokei => gokei.honUriage9).Sum();
                    decKingaku[1, 9]      = outDataAll.Select(gokei => gokei.honUriage10).Sum();
                    decKingaku[1, 10]     = outDataAll.Select(gokei => gokei.honUriage11).Sum();
                    decKingaku[1, 11]     = outDataAll.Select(gokei => gokei.honUriage12).Sum();
                    decKingaku[1, 12]     = outDataAll.Select(gokei => gokei.honUriageGoukei).Sum();

                    // 担当者計
                    var tantoGoukei = from tbl in dtSuiihyo.AsEnumerable()
                                      group tbl by tbl.Field <string>("担当者コード") into g
                                      select new
                    {
                        section         = g.Key,
                        count           = g.Count(),
                        zenUriage1      = g.Sum(p => p.Field <decimal>("前売上1")),
                        zenUriage2      = g.Sum(p => p.Field <decimal>("前売上2")),
                        zenUriage3      = g.Sum(p => p.Field <decimal>("前売上3")),
                        zenUriage4      = g.Sum(p => p.Field <decimal>("前売上4")),
                        zenUriage5      = g.Sum(p => p.Field <decimal>("前売上5")),
                        zenUriage6      = g.Sum(p => p.Field <decimal>("前売上6")),
                        zenUriage7      = g.Sum(p => p.Field <decimal>("前売上7")),
                        zenUriage8      = g.Sum(p => p.Field <decimal>("前売上8")),
                        zenUriage9      = g.Sum(p => p.Field <decimal>("前売上9")),
                        zenUriage10     = g.Sum(p => p.Field <decimal>("前売上10")),
                        zenUriage11     = g.Sum(p => p.Field <decimal>("前売上11")),
                        zenUriage12     = g.Sum(p => p.Field <decimal>("前売上12")),
                        zenUriageGoukei = g.Sum(p => p.Field <decimal>("前売上合計")),
                        honUriage1      = g.Sum(p => p.Field <decimal>("本売上1")),
                        honUriage2      = g.Sum(p => p.Field <decimal>("本売上2")),
                        honUriage3      = g.Sum(p => p.Field <decimal>("本売上3")),
                        honUriage4      = g.Sum(p => p.Field <decimal>("本売上4")),
                        honUriage5      = g.Sum(p => p.Field <decimal>("本売上5")),
                        honUriage6      = g.Sum(p => p.Field <decimal>("本売上6")),
                        honUriage7      = g.Sum(p => p.Field <decimal>("本売上7")),
                        honUriage8      = g.Sum(p => p.Field <decimal>("本売上8")),
                        honUriage9      = g.Sum(p => p.Field <decimal>("本売上9")),
                        honUriage10     = g.Sum(p => p.Field <decimal>("本売上10")),
                        honUriage11     = g.Sum(p => p.Field <decimal>("本売上11")),
                        honUriage12     = g.Sum(p => p.Field <decimal>("本売上12")),
                        honUriageGoukei = g.Sum(p => p.Field <decimal>("本売上合計"))
                    };

                    // 担当者計の前売上1~前売上12、前売上合計、本売上1~本売上12、本売上合計の合計算出
                    decimal[,,] decKingakuTanto = new decimal[tantoGoukei.Count(), 2, 13];
                    for (int cnt = 0; cnt < tantoGoukei.Count(); cnt++)
                    {
                        decKingakuTanto[cnt, 0, 0]  = tantoGoukei.ElementAt(cnt).zenUriage1;
                        decKingakuTanto[cnt, 0, 1]  = tantoGoukei.ElementAt(cnt).zenUriage2;
                        decKingakuTanto[cnt, 0, 2]  = tantoGoukei.ElementAt(cnt).zenUriage3;
                        decKingakuTanto[cnt, 0, 3]  = tantoGoukei.ElementAt(cnt).zenUriage4;
                        decKingakuTanto[cnt, 0, 4]  = tantoGoukei.ElementAt(cnt).zenUriage5;
                        decKingakuTanto[cnt, 0, 5]  = tantoGoukei.ElementAt(cnt).zenUriage6;
                        decKingakuTanto[cnt, 0, 6]  = tantoGoukei.ElementAt(cnt).zenUriage7;
                        decKingakuTanto[cnt, 0, 7]  = tantoGoukei.ElementAt(cnt).zenUriage8;
                        decKingakuTanto[cnt, 0, 8]  = tantoGoukei.ElementAt(cnt).zenUriage9;
                        decKingakuTanto[cnt, 0, 9]  = tantoGoukei.ElementAt(cnt).zenUriage10;
                        decKingakuTanto[cnt, 0, 10] = tantoGoukei.ElementAt(cnt).zenUriage11;
                        decKingakuTanto[cnt, 0, 11] = tantoGoukei.ElementAt(cnt).zenUriage12;
                        decKingakuTanto[cnt, 0, 12] = tantoGoukei.ElementAt(cnt).zenUriageGoukei;
                        decKingakuTanto[cnt, 1, 0]  = tantoGoukei.ElementAt(cnt).honUriage1;
                        decKingakuTanto[cnt, 1, 1]  = tantoGoukei.ElementAt(cnt).honUriage2;
                        decKingakuTanto[cnt, 1, 2]  = tantoGoukei.ElementAt(cnt).honUriage3;
                        decKingakuTanto[cnt, 1, 3]  = tantoGoukei.ElementAt(cnt).honUriage4;
                        decKingakuTanto[cnt, 1, 4]  = tantoGoukei.ElementAt(cnt).honUriage5;
                        decKingakuTanto[cnt, 1, 5]  = tantoGoukei.ElementAt(cnt).honUriage6;
                        decKingakuTanto[cnt, 1, 6]  = tantoGoukei.ElementAt(cnt).honUriage7;
                        decKingakuTanto[cnt, 1, 7]  = tantoGoukei.ElementAt(cnt).honUriage8;
                        decKingakuTanto[cnt, 1, 8]  = tantoGoukei.ElementAt(cnt).honUriage9;
                        decKingakuTanto[cnt, 1, 9]  = tantoGoukei.ElementAt(cnt).honUriage10;
                        decKingakuTanto[cnt, 1, 10] = tantoGoukei.ElementAt(cnt).honUriage11;
                        decKingakuTanto[cnt, 1, 11] = tantoGoukei.ElementAt(cnt).honUriage12;
                        decKingakuTanto[cnt, 1, 12] = tantoGoukei.ElementAt(cnt).honUriageGoukei;
                    }

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

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

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

                    // 期間の月数を計算
                    int intMonthFrom = int.Parse(lstItem[0].Substring(5, 2));
                    int intMonthTo   = int.Parse(lstItem[1].Substring(5, 2));
                    if (intMonthFrom > intMonthTo)
                    {
                        intMonthTo += 12;
                    }
                    int intMonthDiff = intMonthTo - intMonthFrom;

                    Boolean blnDiff = false;

                    // 最後のリストに格納されているデータテーブルの場合、かつ、期間の開始から終了までの差が11カ月未満の場合
                    if (listCnt + 1 == lstDtSuiihyo.Count && intMonthDiff < 11)
                    {
                        blnDiff = true;
                    }

                    if (blnDiff)
                    {
                        // 担当者計の処理
                        for (int cnt = 0; cnt < tantoGoukei.Count(); cnt++)
                        {
                            decKingakuTanto[cnt, 0, 12] = 0;
                            decKingakuTanto[cnt, 1, 12] = 0;
                            for (int column = 0; column < 12; column++)
                            {
                                // 期間終了月の翌月以降の場合、0をセット
                                if (intMonthDiff < column)
                                {
                                    decKingakuTanto[cnt, 0, column] = 0;
                                    decKingakuTanto[cnt, 1, column] = 0;
                                }
                                else
                                {
                                    decKingakuTanto[cnt, 0, 12] += decKingakuTanto[cnt, 0, column];
                                    decKingakuTanto[cnt, 1, 12] += decKingakuTanto[cnt, 1, column];
                                }
                            }
                        }

                        // 合計の処理
                        decKingaku[0, 12] = 0;
                        decKingaku[1, 12] = 0;
                        for (int column = 0; column < 12; column++)
                        {
                            // 期間終了月の翌月以降の場合、0をセット
                            if (intMonthDiff < column)
                            {
                                decKingaku[0, column] = 0;
                                decKingaku[1, column] = 0;
                            }
                            else
                            {
                                decKingaku[0, 12] += decKingaku[0, column];
                                decKingaku[1, 12] += decKingaku[1, column];
                            }
                        }
                    }

                    int tantoCnt    = 0;
                    int tantoRowCnt = 0;

                    // ClosedXMLで1行ずつExcelに出力
                    foreach (DataRow drSuiihyo in dtChkList.Rows)
                    {
                        // 1ページ目のシート作成
                        if (rowCnt == 1)
                        {
                            DateTime dtYmdFrom = DateTime.Parse(lstItem[0]);
                            pageCnt++;

                            // Headerページのみの場合
                            if (workbook.Worksheets.Count == 1)
                            {
                                // タイトル出力(中央揃え、セル結合)
                                IXLCell titleCell = headersheet.Cell("A1");

                                // 出力先の選択が得意先別売上推移表の場合
                                if (lstItem[7].Equals("0"))
                                {
                                    titleCell.Value = "得意先別売上推移表";
                                }
                                else
                                {
                                    titleCell.Value = "得意先別粗利推移表";
                                }
                                titleCell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                                titleCell.Style.Font.FontSize        = 14;
                                headersheet.Range("A1", "P1").Merge();

                                // 単位出力(P2のセル、右揃え)
                                IXLCell unitCell = headersheet.Cell("P2");
                                unitCell.Value = "(単位:千円)";
                                unitCell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;

                                // ヘッダー出力(3行目のセル)
                                headersheet.Cell("A3").Value = "コード";
                                headersheet.Cell("B3").Value = "得意先名";
                                headersheet.Range("B3", "C3").Merge();
                                headersheet.Cell("D3").Value = dtYmdFrom.AddMonths(0);
                                headersheet.Cell("E3").Value = dtYmdFrom.AddMonths(1);
                                headersheet.Cell("F3").Value = dtYmdFrom.AddMonths(2);
                                headersheet.Cell("G3").Value = dtYmdFrom.AddMonths(3);
                                headersheet.Cell("H3").Value = dtYmdFrom.AddMonths(4);
                                headersheet.Cell("I3").Value = dtYmdFrom.AddMonths(5);
                                headersheet.Cell("J3").Value = dtYmdFrom.AddMonths(6);
                                headersheet.Cell("K3").Value = dtYmdFrom.AddMonths(7);
                                headersheet.Cell("L3").Value = dtYmdFrom.AddMonths(8);
                                headersheet.Cell("M3").Value = dtYmdFrom.AddMonths(9);
                                headersheet.Cell("N3").Value = dtYmdFrom.AddMonths(10);
                                headersheet.Cell("O3").Value = dtYmdFrom.AddMonths(11);
                                headersheet.Cell("P3").Value = "合計";

                                // 各月
                                headersheet.Cell("D3").Style.DateFormat.Format        = "yyyy年M月";
                                headersheet.Range("E3", "O3").Style.DateFormat.Format = "M月";

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

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

                                // 列幅の指定
                                headersheet.Column(1).Width = 6;
                                headersheet.Column(2).Width = 28;
                                headersheet.Column(3).Width = 6;
                                for (int cnt = 4; cnt < 15; cnt++)
                                {
                                    headersheet.Column(cnt).Width = 9;
                                }
                                headersheet.Column(16).Width = 10;

                                // 印刷体裁(B4横、印刷範囲)
                                headersheet.PageSetup.PaperSize       = XLPaperSize.B4Paper;
                                headersheet.PageSetup.PageOrientation = XLPageOrientation.Landscape;

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

                                // ヘッダーシートのコピー
                                pdf.sheetCopy(ref workbook, ref headersheet, ref currentsheet, workbook.Worksheets.Count);
                            }
                            else
                            {
                                // 開始年を変更
                                dtYmdFrom = DateTime.Parse(lstItem[0]);
                                headersheet.Cell("D3").Value = dtYmdFrom.AddYears(listCnt);

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

                        // 得意先コードを出力
                        currentsheet.Cell(xlsRowCnt, 1).Value = drSuiihyo[2].ToString();
                        currentsheet.Cell(xlsRowCnt, 1).Style.Alignment.Vertical = XLAlignmentVerticalValues.Top;

                        // 得意先名を出力
                        currentsheet.Cell(xlsRowCnt, 2).Value = drSuiihyo[3].ToString();
                        currentsheet.Cell(xlsRowCnt, 2).Style.Alignment.Vertical = XLAlignmentVerticalValues.Top;
                        currentsheet.Cell(xlsRowCnt, 2).Style.Alignment.WrapText = true;

                        // セルの結合
                        currentsheet.Range(xlsRowCnt, 1, xlsRowCnt + 2, 1).Merge();
                        currentsheet.Range(xlsRowCnt, 2, xlsRowCnt + 2, 2).Merge();

                        // 行タイトル(前年、本年、達成率)を出力
                        currentsheet.Cell(xlsRowCnt, 3).Value     = "前年";
                        currentsheet.Cell(xlsRowCnt + 1, 3).Value = "本年";
                        currentsheet.Cell(xlsRowCnt + 2, 3).Value = "達成率";

                        // 期間の開始から終了までの差が11カ月未満の場合
                        if (blnDiff)
                        {
                            drSuiihyo[16] = 0;
                            drSuiihyo[29] = 0;
                        }

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

                            // 前売上1~12セルの処理
                            if (colCnt >= 5 && colCnt <= 16)
                            {
                                // 3桁毎に","を挿入する
                                currentsheet.Cell(xlsRowCnt, colCnt - 1).Style.NumberFormat.SetFormat("#,##0");
                                currentsheet.Cell(xlsRowCnt, colCnt - 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;

                                // 期間終了月の翌月以降の場合、0をセット
                                if (blnDiff && intMonthDiff < (colCnt - 5))
                                {
                                    currentsheet.Cell(xlsRowCnt, colCnt - 1).Value = 0;
                                }
                                else
                                {
                                    currentsheet.Cell(xlsRowCnt, colCnt - 1).Value = str;

                                    // 期間の開始から終了までの差が11カ月未満の場合
                                    if (blnDiff)
                                    {
                                        drSuiihyo[16] = (decimal)drSuiihyo[16] + (decimal)drSuiihyo[colCnt - 1];
                                    }
                                }
                            }

                            // 前売上合計セルの処理
                            if (colCnt == 17)
                            {
                                // 3桁毎に","を挿入する
                                currentsheet.Cell(xlsRowCnt, colCnt - 1).Style.NumberFormat.SetFormat("#,##0");
                                currentsheet.Cell(xlsRowCnt, colCnt - 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                                currentsheet.Cell(xlsRowCnt, colCnt - 1).Value = str;
                            }

                            // 本売上1~12セルの処理
                            if (colCnt >= 18 && colCnt <= 29)
                            {
                                // 3桁毎に","を挿入する
                                currentsheet.Cell(xlsRowCnt + 1, colCnt - 14).Style.NumberFormat.SetFormat("#,##0");
                                currentsheet.Cell(xlsRowCnt + 1, colCnt - 14).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;

                                // 期間終了月の翌月以降の場合、0をセット
                                if (blnDiff && intMonthDiff < (colCnt - 18))
                                {
                                    currentsheet.Cell(xlsRowCnt + 1, colCnt - 14).Value = 0;
                                }
                                else
                                {
                                    currentsheet.Cell(xlsRowCnt + 1, colCnt - 14).Value = str;

                                    // 期間の開始から終了までの差が11カ月未満の場合
                                    if (blnDiff)
                                    {
                                        drSuiihyo[29] = (decimal)drSuiihyo[29] + (decimal)drSuiihyo[colCnt - 1];
                                    }
                                }
                            }

                            // 本売上合計セルの処理
                            if (colCnt == 30)
                            {
                                // 3桁毎に","を挿入する
                                currentsheet.Cell(xlsRowCnt + 1, colCnt - 14).Style.NumberFormat.SetFormat("#,##0");
                                currentsheet.Cell(xlsRowCnt + 1, colCnt - 14).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                                currentsheet.Cell(xlsRowCnt + 1, colCnt - 14).Value = str;
                            }
                        }

                        // 達成率の計算、出力
                        for (int column = 0; column < 12; column++)
                        {
                            decimal decZennen = 0;
                            decimal decHonnen = 0;
                            double  dblRitsu;

                            for (int cnt = 0; cnt <= column; cnt++)
                            {
                                // 期間の開始から終了までの差が11カ月未満でない場合、or
                                // 期間の開始から終了までの差が11カ月未満の場合、かつ、月数の差が列数以下の場合
                                if (!blnDiff || blnDiff && intMonthDiff >= column)
                                {
                                    decZennen += decimal.Parse(drSuiihyo[cnt + 4].ToString());
                                    decHonnen += decimal.Parse(drSuiihyo[cnt + 17].ToString());
                                }
                            }

                            if (decZennen == 0 || decHonnen == 0)
                            {
                                dblRitsu = 0;
                            }
                            else
                            {
                                dblRitsu = ((double)decHonnen / (double)decZennen) * 100;
                            }

                            // 3桁毎に","を挿入する、小数点第2位まで
                            currentsheet.Cell(xlsRowCnt + 2, column + 4).Style.NumberFormat.SetFormat("#,##0.00");
                            currentsheet.Cell(xlsRowCnt + 2, column + 4).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                            currentsheet.Cell(xlsRowCnt + 2, column + 4).Value = dblRitsu.ToString();
                        }

                        // 達成率の合計出力
                        // 3桁毎に","を挿入する、小数点第2位まで
                        currentsheet.Cell(xlsRowCnt + 2, 16).Style.NumberFormat.SetFormat("#,##0.00");
                        currentsheet.Cell(xlsRowCnt + 2, 16).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        currentsheet.Cell(xlsRowCnt + 2, 16).Value = currentsheet.Cell(xlsRowCnt + 2, intMonthDiff + 4).Value;

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

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

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

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

                            // 縦中央
                            IXLCell tantocell = currentsheet.Cell(xlsRowCnt, 1);
                            tantocell.Value = drSuiihyo[1].ToString();
                            tantocell.Style.Alignment.Vertical = XLAlignmentVerticalValues.Center;

                            // セル結合、セルの背景色
                            IXLRange tantorange = currentsheet.Range(xlsRowCnt, 1, xlsRowCnt + 2, 2);
                            tantorange.Merge();
                            tantorange.Style.Fill.BackgroundColor = XLColor.LightGray;

                            // 行タイトル(前年、本年、達成率)を出力
                            currentsheet.Cell(xlsRowCnt, 3).Value     = "前年";
                            currentsheet.Cell(xlsRowCnt + 1, 3).Value = "本年";
                            currentsheet.Cell(xlsRowCnt + 2, 3).Value = "達成率";

                            // 前年、本年、達成率セルの処理
                            for (int column = 0; column < 13; column++)
                            {
                                // 前年と本年を出力
                                for (int cnt = 0; cnt < 2; cnt++)
                                {
                                    // 3桁毎に","を挿入する
                                    IXLCell kingakuCell = currentsheet.Cell(xlsRowCnt + cnt, column + 4);
                                    kingakuCell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                                    kingakuCell.Style.NumberFormat.SetFormat("#,##0");
                                    kingakuCell.Value = decKingakuTanto[tantoCnt, cnt, column].ToString();
                                }

                                // 達成率の計算、出力
                                double dblRitsu;

                                if (decKingakuTanto[tantoCnt, 0, column] == 0 || decKingakuTanto[tantoCnt, 1, column] == 0)
                                {
                                    dblRitsu = 0;
                                }
                                else
                                {
                                    dblRitsu = ((double)decKingakuTanto[tantoCnt, 1, column] / (double)decKingakuTanto[tantoCnt, 0, column]) * 100;
                                }

                                // 3桁毎に","を挿入する、小数点第2位まで
                                currentsheet.Cell(xlsRowCnt + 2, column + 4).Style.NumberFormat.SetFormat("#,##0.00");
                                currentsheet.Cell(xlsRowCnt + 2, column + 4).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                                currentsheet.Cell(xlsRowCnt + 2, column + 4).Value = dblRitsu.ToString();
                            }

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

                            tantoCnt++;
                            tantoRowCnt = 0;
                        }

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

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

                        rowCnt++;
                        xlsRowCnt += 3;
                    }

                    // 最終行を出力した後、合計行を出力
                    if (dtChkList.Rows.Count > 0)
                    {
                        // 前年と本年の合計を出力
                        for (int row = 0; row < 2; row++)
                        {
                            for (int column = 0; column < 13; column++)
                            {
                                // 3桁毎に","を挿入する
                                IXLCell kingakuCell = currentsheet.Cell(xlsRowCnt + row, 4 + column);
                                kingakuCell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                                kingakuCell.Style.NumberFormat.SetFormat("#,##0");
                                kingakuCell.Value = decKingaku[row, column].ToString();
                            }
                        }

                        // 合計タイトルを出力
                        currentsheet.Cell(xlsRowCnt, 1).Value = "■■ 合  計 ■■";
                        currentsheet.Cell(xlsRowCnt, 1).Style.Alignment.Vertical   = XLAlignmentVerticalValues.Center;
                        currentsheet.Cell(xlsRowCnt, 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

                        // セルの結合
                        currentsheet.Range(xlsRowCnt, 1, xlsRowCnt + 2, 2).Merge();

                        // 行タイトル(前年、本年、達成率)を出力
                        currentsheet.Cell(xlsRowCnt, 3).Value     = "前年";
                        currentsheet.Cell(xlsRowCnt + 1, 3).Value = "本年";
                        currentsheet.Cell(xlsRowCnt + 2, 3).Value = "達成率";

                        // 達成率の計算、出力
                        for (int column = 0; column < 13; column++)
                        {
                            double dblRitsu;

                            if (decKingaku[0, column] == 0 || decKingaku[1, column] == 0)
                            {
                                dblRitsu = 0;
                            }
                            else
                            {
                                dblRitsu = ((double)decKingaku[1, column] / (double)decKingaku[0, column]) * 100;
                            }

                            // 3桁毎に","を挿入する、小数点第2位まで
                            currentsheet.Cell(xlsRowCnt + 2, column + 4).Style.NumberFormat.SetFormat("#,##0.00");
                            currentsheet.Cell(xlsRowCnt + 2, column + 4).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                            currentsheet.Cell(xlsRowCnt + 2, column + 4).Value = dblRitsu.ToString();
                        }

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

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

                // 各ページのヘッダー部を指定
                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, 1));
            }
            catch
            {
                throw;
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #14
0
        ///<summary>
        ///     F10:Excel出力
        ///</summary>
        private void excelTorihiki()
        {
            //SQL実行時に取り出したデータを入れる用
            DataTable dtSetCd_B = new DataTable();

            //ビジネス層のインスタンス生成
            M1070_Torihikisaki_B daibunB = new M1070_Torihikisaki_B();
            try
            {
                dtSetCd_B = daibunB.getPrintData();

                BaseMessageBox basemessagebox;
                //取得したデータがない場合
                if (dtSetCd_B == null || dtSetCd_B.Rows.Count == 0)
                {
                    //例外発生メッセージ(OK)
                    basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_ERROR, "対象のデータはありません", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                    basemessagebox.ShowDialog();
                    return;
                }

                // SaveFileDialogクラスのインスタンスを作成
                SaveFileDialog sfd = new SaveFileDialog();
                // ファイル名の指定
                sfd.FileName = "取引先マスタ_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xlsx";
                // デフォルトパス取得(デスクトップ)
                string Init_dir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                //はじめに表示されるフォルダを指定する
                sfd.InitialDirectory = Init_dir;
                // ファイルフィルタの設定
                sfd.Filter = "すべてのファイル(*.*)|*.*";

                //ダイアログを表示する
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    CreatePdf cpdf = new CreatePdf();
                    string[] header =
                    {
                            "コード",
                            "取引先",
                            "カナ",
                            "郵便番号",
                            "住所1",
                            "住所2",
                            "電話番号",
                            "FAX",
                        };

                    string outFile = sfd.FileName;

                    // Excel作成処理
                    cpdf.DtToXls(dtSetCd_B, "取引先マスタリスト", outFile, 3, 1, header);

                    // メッセージボックスの処理、Excel作成完了の場合のウィンドウ(OK)
                    basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excelファイルを作成しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_INFOMATION);
                    basemessagebox.ShowDialog();

                }
            }
            catch (Exception ex)
            {
                //データロギング
                new CommonException(ex);
                //例外発生メッセージ(OK)
                BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_ERROR, CommonTeisu.LABEL_ERROR_MESSAGE, CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                basemessagebox.ShowDialog();
                return;
            }
        }
コード例 #15
0
        /// <summary>
        /// F10:Excel出力
        /// </summary>
        private void exportXls()
        {
            // SaveFileDialogクラスのインスタンスを作成
            SaveFileDialog sfd = new SaveFileDialog();

            // ファイル名の指定
            sfd.FileName = "得意先別売上管理表_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xlsx";
            // デフォルトパス取得(デスクトップ)
            string Init_dir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            //はじめに表示されるフォルダを指定する
            sfd.InitialDirectory = Init_dir;
            // ファイルフィルタの設定
            sfd.Filter = "すべてのファイル(*.*)|*.*";

            try
            {
                // データ検索用
                List <string> lstSearchItem = new List <string>();

                // データチェック
                if (!blnDataCheack())
                {
                    return;
                }

                //待機状態
                Cursor.Current = Cursors.WaitCursor;

                // 検索するデータをリストに格納
                lstSearchItem.Add(txtYmdFrom.Text);
                lstSearchItem.Add(txtYmdTo.Text);

                // グループコード(開始)が空の場合
                if (labelSet_GroupCdFrom.CodeTxtText.Equals(""))
                {
                    lstSearchItem.Add("0000");
                }
                else
                {
                    lstSearchItem.Add(labelSet_GroupCdFrom.CodeTxtText);
                }
                // グループコード(終了)が空の場合
                if (labelSet_GroupCdTo.CodeTxtText.Equals(""))
                {
                    lstSearchItem.Add("9999");
                }
                else
                {
                    lstSearchItem.Add(labelSet_GroupCdTo.CodeTxtText);
                }

                // 担当者コード(開始)が空の場合
                if (labelSet_TantoushaCdFrom.CodeTxtText.Equals(""))
                {
                    lstSearchItem.Add("0000");
                }
                else
                {
                    lstSearchItem.Add(labelSet_TantoushaCdFrom.CodeTxtText);
                }
                // 担当者コード(終了)が空の場合
                if (labelSet_TantoushaCdTo.CodeTxtText.Equals(""))
                {
                    lstSearchItem.Add("9999");
                }
                else
                {
                    lstSearchItem.Add(labelSet_TantoushaCdTo.CodeTxtText);
                }

                // 得意先コード(開始)が空の場合
                if (labelSet_TokuisakiCdFrom.CodeTxtText.Equals(""))
                {
                    lstSearchItem.Add("0000");
                }
                else
                {
                    lstSearchItem.Add(labelSet_TokuisakiCdFrom.CodeTxtText);
                }
                // 得意先コード(終了)が空の場合
                if (labelSet_TokuisakiCdTo.CodeTxtText.Equals(""))
                {
                    lstSearchItem.Add("9999");
                }
                else
                {
                    lstSearchItem.Add(labelSet_TokuisakiCdTo.CodeTxtText);
                }

                // 営業所コード(開始)が空の場合
                if (labelSet_EigyoshoCdFrom.CodeTxtText.Equals(""))
                {
                    lstSearchItem.Add("0000");
                }
                else
                {
                    lstSearchItem.Add(labelSet_EigyoshoCdFrom.CodeTxtText);
                }
                // 営業所コード(終了)が空の場合
                if (labelSet_EigyoshoCdTo.CodeTxtText.Equals(""))
                {
                    lstSearchItem.Add("9999");
                }
                else
                {
                    lstSearchItem.Add(labelSet_EigyoshoCdTo.CodeTxtText);
                }

                // ビジネス層のインスタンス生成
                C0630_TokuisakiUriageArariPrint_B uriagePrint_B = new C0630_TokuisakiUriageArariPrint_B();

                // 検索実行
                DataTable dtUriage = uriagePrint_B.getUriage(lstSearchItem);

                // カーソルを戻す
                this.Cursor = Cursors.Default;

                // 対象データがある場合
                if (dtUriage != null && dtUriage.Rows.Count > 0)
                {
                    // 並べ替え(グループコード、担当者コード、得意先コード)
                    DataView dvUriage = new DataView(dtUriage);
                    dvUriage.Sort = "グループコード, 担当者コード, 得意先コード";
                    dtUriage      = dvUriage.ToTable();

                    // ダイアログ表示
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        //待機状態
                        Cursor.Current = Cursors.WaitCursor;

                        CreatePdf cpdf = new CreatePdf();

                        // 出力するヘッダを設定
                        string[] header =
                        {
                            "グループ名",
                            "担当者名",
                            "コード",
                            "得意先名",
                            "売上額",
                            "粗利額",
                            "粗利率",
                            "指定期間内受注残金額",
                            "指定期間内受注残粗利",
                            "指定期間以降受注残金額",
                            "指定期間以降受注残粗利",
                            "月末売掛金残",
                            "当月入金額",
                        };

                        // Linqで出力対象の項目をSelect
                        // カラム名は以下のようにつける(カラム名でフォーマットを判断するため)
                        // 金額関係:***kingaku
                        // 単価関係:***tanka
                        // 原価:***genka
                        // 数量:***suryo
                        var outDat = dtUriage.AsEnumerable()
                                     .Select(dat => new
                        {
                            groupName                 = dat["グループ名"],
                            tantoName                 = dat["担当者名"],
                            tokuiCode                 = dat["得意先コード"],
                            tokuiName                 = dat["得意先名"],
                            uriageKingaku             = dat["売上額"],
                            arariKingaku              = dat["粗利額"],
                            arariritu                 = dat["粗利率"],
                            getumatuJuchuzanKingaku   = dat["月末迄受注残売上"],
                            getumatuJuchuarariKingaku = dat["月末迄受注残粗利"],
                            yokugetuJuchuzankingaku   = dat["翌月以降受注残売上"],
                            yokugetuJuchuarariKingaku = dat["翌月以降受注残粗利"],
                            urikakezanKingaku         = dat["月末売掛金残"],
                            nyuKingaku                = dat["当月入金額"],
                        }).ToList();

                        // listをDataTableに変換
                        DataTable dtTokuiArari = cpdf.ConvertToDataTable(outDat);

                        string outFile = sfd.FileName;

                        cpdf.DtToXls(dtTokuiArari, "得意先別売上管理表", outFile, 3, 1, header);

                        this.Cursor = Cursors.Default;

                        // メッセージボックスの処理、Excel作成完了の場合のウィンドウ(OK)
                        BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excelファイルを作成しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_INFOMATION);
                        basemessagebox.ShowDialog();
                    }
                }
                else
                {
                    // メッセージボックスの処理、項目が空の場合のウィンドウ(OK)
                    BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_INPUT, "対象のデータはありません", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                    basemessagebox.ShowDialog();

                    //元に戻す
                    Cursor.Current = Cursors.Default;
                    return;
                }
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;

                // エラーロギング
                new CommonException(ex);

                // Excel出力失敗メッセージ
                BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excel出力に失敗しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                basemessagebox.ShowDialog();

                return;
            }
        }
コード例 #16
0
 private void bn_print_Click(object sender, EventArgs e)
 {
     sfd.FileName = r.Bezeichnung;
     if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
     {
         Kunde k = new Kunde();
         k = BL.getKunde(r.Kundenid);
         CreatePdf pdf = new CreatePdf();
         pdf.CreatePdfDocument(sfd.FileName);
         pdf.AddHeader(r.Bezeichnung);
         pdf.addKundenname(k.Vorname + " " + k.Nachname);
         pdf.addKundenanschrift("Email: " + k.Email);
         if (!k.Adresse.Equals(String.Empty) && !k.Hausnummer.Equals(String.Empty))
             pdf.addKundenanschrift (k.Adresse + " " + k.Hausnummer);
         if (!k.Plz.Equals(String.Empty) && !k.Ort.Equals(String.Empty))
             pdf.addKundenanschrift (k.Plz + " " +  k.Ort);
         if (!k.Telefon.Equals(String.Empty))
             pdf.addKundenanschrift ("Tel.: " + k.Telefon);
         pdf.addTableRechnung(2, values, BL.getRechnungssumme(r.Rechnungid).ToString("#0.00") + " Euro");
         pdf.ClosePdf();
     }
 }
コード例 #17
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtSetCd_B_Input">
        ///     MOの印刷データテーブル</param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtSetCd_B_Input, List <string> lstPrintHeader)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            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 = dtSetCd_B_Input.AsEnumerable()
                                 .Select(dat => new
                {
                    MOHin         = dat["品名規格"],
                    MOSu          = dat["数量"],
                    MOHachuTanka  = dat["発注単価"],
                    MONoki        = dat["納期"],
                    MOShimukesaki = dat["仕向け先"],
                    MOChuban      = dat["注番"],
                }).ToList();

                // リストをデータテーブルに変換
                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 = 5;  // Excel出力行カウント(開始は出力行)
                int maxPage   = 0;  // 最大ページ数

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

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

                        // タイトル出力(中央揃え、セル結合)
                        IXLCell titleCell = headersheet.Cell("A1");
                        titleCell.Value = "MOリスト";
                        titleCell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                        titleCell.Style.Font.FontSize        = 16;
                        headersheet.Range("A1", "H1").Merge();

                        // ヘッダー出力(表ヘッダー上)
                        headersheet.Cell("A3").Value = lstPrintHeader[0];   //年月度
                        headersheet.Cell("B3").Value = lstPrintHeader[1];   //仕向け元名

                        // ヘッダー出力(表ヘッダー)
                        headersheet.Cell("A4").Value = "品   名   ・   規   格";
                        headersheet.Cell("D4").Value = "数 量";
                        headersheet.Cell("E4").Value = "発注単価";
                        headersheet.Cell("F4").Value = "納 期";
                        headersheet.Cell("G4").Value = "仕 向 け 先";
                        headersheet.Cell("H4").Value = "注 番";

                        headersheet.Range("A4", "C4").Merge();

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

                        // 列幅の指定
                        headersheet.Column(1).Width = 20;
                        headersheet.Column(2).Width = 20;
                        headersheet.Column(3).Width = 20;
                        headersheet.Column(4).Width = 10;
                        headersheet.Column(5).Width = 15;
                        headersheet.Column(6).Width = 11;
                        headersheet.Column(7).Width = 50;
                        headersheet.Column(8).Width = 11;

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

                        //背景を灰色にする
                        headersheet.Range("A4", "H4").Style.Fill.BackgroundColor = XLColor.LightGray;

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

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

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

                    // 1セルずつデータ出力
                    for (int colCnt = 1; colCnt <= maxColCnt; colCnt++)
                    {
                        //マージ
                        currentsheet.Range("A" + xlsRowCnt, "C" + xlsRowCnt).Merge();

                        string str = drSiireCheak[colCnt - 1].ToString();

                        //行の高さ指定
                        currentsheet.Row(xlsRowCnt).Height = 20;

                        //品名・規格の場合
                        if (colCnt == 1)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Value = str;
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        }
                        //数量、発注単価の場合
                        else if (colCnt == 2 || colCnt == 3)
                        {
                            //小数点以下第二位まで表示
                            currentsheet.Cell(xlsRowCnt, colCnt + 2).Style.NumberFormat.Format = "#,0.00";

                            //マージされた分をずらす
                            currentsheet.Cell(xlsRowCnt, colCnt + 2).Value = str;
                            currentsheet.Cell(xlsRowCnt, colCnt + 2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }
                        //納期、仕向け先、注番の場合
                        else
                        {
                            //マージされた分をずらす
                            currentsheet.Cell(xlsRowCnt, colCnt + 2).Value = str;
                            currentsheet.Cell(xlsRowCnt, colCnt + 2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        }
                    }

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

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

                        xlsRowCnt = 4;

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

                    rowCnt++;
                    xlsRowCnt++;
                }

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

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

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

                // PDF化の処理
                return(pdf.createPdf(strOutXlsFile, strDateTime, 1));
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #18
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtUriage">
        ///     売上管理表のデータテーブル</param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtUriage, List <string> lstItem)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strFilePath = "./Template/C0140_TantouUriageArariNenkan.xlsx";
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            try
            {
                CreatePdf pdf = new CreatePdf();

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

                IXLWorksheet templatesheet = workbook.Worksheet(1); // テンプレートシート
                IXLWorksheet currentsheet  = null;                  // 処理中シート

                DataTable dtChkList    = null;
                int[]     groupRowsCnt = null;
                int       groupsCnt    = 0;

                // 総合計を取得
                decimal[] decKingaku = getGoukeiKingaku(dtUriage, ref dtChkList);

                // グループ合計を取得
                decimal[,] decKingakuGroup = getGroupKingaku(dtUriage, ref groupRowsCnt, ref groupsCnt);

                int pageCnt   = 0;  // ページ(シート枚数)カウント
                int rowCnt    = 1;  // datatable処理行カウント
                int xlsRowCnt = 5;  // Excel出力行カウント(開始は出力行)

                int groupCnt    = 0;
                int groupRowCnt = 0;

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

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

                        currentsheet.Cell("A1").Value = lstItem[0].ToString() + currentsheet.Cell("A1").Value;
                    }

                    // 担当者セルのデータ出力
                    currentsheet.Cell(xlsRowCnt, 1).Value  = drUriage[1].ToString();
                    currentsheet.Cell(xlsRowCnt, 23).Value = drUriage[1].ToString();

                    // 5月~10月、上期合計セルのデータ出力
                    for (int colCnt = 2; colCnt <= 22; colCnt++)
                    {
                        currentsheet.Cell(xlsRowCnt, colCnt).Value = drUriage[colCnt].ToString();
                    }

                    // 11月~12月、翌年の1月~4月、下期合計セルのデータ出力
                    for (int colCnt = 23; colCnt <= 43; colCnt++)
                    {
                        currentsheet.Cell(xlsRowCnt, colCnt + 1).Value = drUriage[colCnt].ToString();
                    }

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


                    // グループ計を出力
                    groupRowCnt++;
                    if (groupRowsCnt[groupCnt] == groupRowCnt)
                    {
                        xlsRowCnt++;

                        // 担当者セルの出力
                        currentsheet.Cell(xlsRowCnt, 1).Value  = drUriage[0].ToString();
                        currentsheet.Cell(xlsRowCnt, 23).Value = drUriage[0].ToString();

                        // 5月~10月、上期合計セルのデータ出力
                        for (int colCnt = 0; colCnt <= 20; colCnt++)
                        {
                            // 前年粗利額の場合
                            if (colCnt % 3 == 2)
                            {
                                decimal decHiritsu;
                                if (decKingakuGroup[groupCnt, colCnt] == 0)
                                {
                                    decHiritsu = 0;
                                }
                                else
                                {
                                    decHiritsu = decKingakuGroup[groupCnt, colCnt - 1] / decKingakuGroup[groupCnt, colCnt];
                                }
                                currentsheet.Cell(xlsRowCnt, colCnt + 2).Value = decHiritsu.ToString();
                            }
                            else
                            {
                                currentsheet.Cell(xlsRowCnt, colCnt + 2).Value = decKingakuGroup[groupCnt, colCnt].ToString();
                            }
                        }

                        // 11月~12月、翌年の1月~4月、下期合計セルのデータ出力
                        for (int colCnt = 21; colCnt <= 41; colCnt++)
                        {
                            // 前年粗利額の場合
                            if (colCnt % 3 == 2)
                            {
                                decimal decHiritsu;
                                if (decKingakuGroup[groupCnt, colCnt] == 0)
                                {
                                    decHiritsu = 0;
                                }
                                else
                                {
                                    decHiritsu = decKingakuGroup[groupCnt, colCnt - 1] / decKingakuGroup[groupCnt, colCnt];
                                }
                                currentsheet.Cell(xlsRowCnt, colCnt + 3).Value = decHiritsu.ToString();
                            }
                            else
                            {
                                currentsheet.Cell(xlsRowCnt, colCnt + 3).Value = decKingakuGroup[groupCnt, colCnt].ToString();
                            }
                        }

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

                        groupCnt++;
                        groupRowCnt = 0;
                    }

                    rowCnt++;
                    xlsRowCnt++;
                }

                // 最終行を出力した後、合計行を出力
                if (dtChkList.Rows.Count > 0)
                {
                    // 担当者セルの出力
                    currentsheet.Cell(xlsRowCnt, 1).Value  = "総合計";
                    currentsheet.Cell(xlsRowCnt, 23).Value = "総合計";

                    // 5月~10月、上期合計セルのデータ出力
                    for (int colCnt = 0; colCnt <= 20; colCnt++)
                    {
                        // 前年粗利額の場合
                        if (colCnt % 3 == 2)
                        {
                            decimal decHiritsu;
                            if (decKingaku[colCnt] == 0)
                            {
                                decHiritsu = 0;
                            }
                            else
                            {
                                decHiritsu = decKingaku[colCnt - 1] / decKingaku[colCnt];
                            }
                            currentsheet.Cell(xlsRowCnt, colCnt + 2).Value = decHiritsu.ToString();
                        }
                        else
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt + 2).Value = decKingaku[colCnt].ToString();
                        }
                    }

                    // 11月~12月、翌年の1月~4月、下期合計セルのデータ出力
                    for (int colCnt = 21; colCnt <= 41; colCnt++)
                    {
                        // 前年粗利額の場合
                        if (colCnt % 3 == 2)
                        {
                            decimal decHiritsu;
                            if (decKingaku[colCnt] == 0)
                            {
                                decHiritsu = 0;
                            }
                            else
                            {
                                decHiritsu = decKingaku[colCnt - 1] / decKingaku[colCnt];
                            }
                            currentsheet.Cell(xlsRowCnt, colCnt + 3).Value = decHiritsu;
                        }
                        else
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt + 3).Value = decKingaku[colCnt].ToString();
                        }
                    }

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

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

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

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

                // PDF化の処理
                return(pdf.createPdf(strOutXlsFile, strDateTime, 1));
            }
            catch
            {
                throw;
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #19
0
        /// <summary>
        /// F10:Excel出力
        /// </summary>
        private void exportXls()
        {
            // SaveFileDialogクラスのインスタンスを作成
            SaveFileDialog sfd = new SaveFileDialog();

            // ファイル名の指定
            sfd.FileName = "請求一覧表_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xlsx";
            // デフォルトパス取得(デスクトップ)
            string Init_dir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            //はじめに表示されるフォルダを指定する
            sfd.InitialDirectory = Init_dir;
            // ファイルフィルタの設定
            sfd.Filter = "すべてのファイル(*.*)|*.*";

            try
            {
                //待機状態
                Cursor.Current = Cursors.WaitCursor;

                // データチェック処理
                if (!dataCheack())
                {
                    //元に戻す
                    Cursor.Current = Cursors.Default;
                    return;
                }

                // データ検索用
                List <string> lstSearchItem = new List <string>();


                // ビジネス層のインスタンス生成
                B0410_SeikyuItiranPrint_B seikyuitiranprintB = new B0410_SeikyuItiranPrint_B();

                // 検索するデータをリストに格納
                lstSearchItem.Add(txtSimekiriYMD.Text);
                lstSearchItem.Add(txtKaisiYMD.Text);
                lstSearchItem.Add(labelSet_TokuisakiStart.CodeTxtText);
                lstSearchItem.Add(labelSet_TokuisakiEnd.CodeTxtText);
                lstSearchItem.Add(txtSimekiribiCd.Text);
                if (radSetSort.judCheckBtn() == 0 || radSetSort.radbtn0.Checked)
                {
                    lstSearchItem.Add("1");
                }
                else if (radSetSort.judCheckBtn() == 1 || radSetSort.radbtn1.Checked)
                {
                    lstSearchItem.Add("2");
                }
                else
                {
                    lstSearchItem.Add("3");
                }
                lstSearchItem.Add(Environment.UserName);


                // 検索実行
                DataTable dtSeikyuItiran = seikyuitiranprintB.getSeikyuItiran(lstSearchItem);

                // カーソルを戻す
                this.Cursor = Cursors.Default;

                // 検索結果にデータがあった場合
                if (dtSeikyuItiran.Rows.Count > 0)
                {
                    // ダイアログ表示
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        //待機状態
                        Cursor.Current = Cursors.WaitCursor;

                        CreatePdf cpdf = new CreatePdf();

                        // 出力するヘッダを設定
                        string[] header =
                        {
                            "コード",
                            "得意先名",
                            "前月売掛残",
                            "入金現金",
                            "入金小切手",
                            "入金振込",
                            "入金手形",
                            "入金相殺",
                            "入金手数料",
                            "入金その他",
                            "繰越残高",
                            "当月売上高",
                            "当月消費税",
                            "当月残高",
                            "税区分",
                        };

                        // Linqで出力対象の項目をSelect
                        // カラム名は以下のようにつける(カラム名でフォーマットを判断するため)
                        // 金額関係:***kingaku
                        // 単価関係:***tanka
                        // 原価:***genka
                        // 数量:***suryo
                        var outDat = dtSeikyuItiran.AsEnumerable()
                                     .Select(dat => new
                        {
                            code              = dat["得意先コード"],
                            tokuisakiName     = dat["得意先名"],
                            zenurizanKingaku  = dat["前月売掛残"],
                            genKingaku        = dat["入金現金"],
                            kogiteKingaku     = dat["入金小切手"],
                            furikomiKingaku   = dat["入金振込"],
                            teagataKingaku    = dat["入金手形"],
                            sosaiKingaku      = dat["入金相殺"],
                            tesuryoKingaku    = dat["入金手数料"],
                            sonotakingaku     = dat["入金その他"],
                            kurizanKingaku    = dat["繰越残高"],
                            uriagedataKingaku = dat["当月売上高"],
                            zeiKingaku        = dat["当月消費税"],
                            tougetuzanKingaku = dat["当月残高"],
                            zeiku             = dat["税区"],
                        }).ToList();

                        // listをDataTableに変換
                        DataTable dtSiireChk = cpdf.ConvertToDataTable(outDat);

                        string outFile = sfd.FileName;

                        cpdf.DtToXls(dtSiireChk, "請求一覧表", outFile, 3, 1, header);

                        this.Cursor = Cursors.Default;

                        // メッセージボックスの処理、Excel作成完了の場合のウィンドウ(OK)
                        BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excelファイルを作成しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_INFOMATION);
                        basemessagebox.ShowDialog();
                    }
                }
                else
                {
                    // メッセージボックスの処理、項目が空の場合のウィンドウ(OK)
                    BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_INPUT, "対象のデータはありません", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                    basemessagebox.ShowDialog();

                    //元に戻す
                    Cursor.Current = Cursors.Default;
                    return;
                }
            }
            catch (Exception ex)
            {
                // エラーロギング
                new CommonException(ex);

                // メッセージボックスの処理、PDF作成失敗の場合のウィンドウ(OK)
                BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "印刷が失敗しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                basemessagebox.ShowDialog();

                return;
            }
        }
コード例 #20
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// DataTableをもとにxlsxファイルを作成し、PDFファイルを作成
        /// </summary>
        /// <param name="dtHachu">発注のデータテーブル</param>
        /// <returns>結合PDFファイル</returns>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtPrintData, List <string> lstlstTorihiki)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            //型番が被った場合の判定用
            string strKatabanSub = "";

            //空白行も含めた合計行数
            int intMaxRowCnt = 0;

            //空白行を追加した印刷データ
            DataTable dtPrintDataNew = new DataTable();

            dtPrintDataNew.Columns.Add("型番");
            dtPrintDataNew.Columns.Add("単価");
            dtPrintDataNew.Columns.Add("仕向先");
            dtPrintDataNew.Columns.Add("最終仕入日");

            //空白行付きの印刷データを作成
            for (int intCnt = 0; intCnt < dtPrintData.Rows.Count; intCnt++)
            {
                //一行目の場合
                if (intCnt == 0)
                {
                    dtPrintDataNew.Rows.Add(dtPrintData.Rows[intCnt]["型番"].ToString(),
                                            dtPrintData.Rows[intCnt]["単価"].ToString(),
                                            dtPrintData.Rows[intCnt]["仕向先"].ToString(),
                                            dtPrintData.Rows[intCnt]["最終仕入日"].ToString());

                    intMaxRowCnt++;
                }
                else
                {
                    //同じ型番の場合
                    if (dtPrintDataNew.Rows[intMaxRowCnt - 1]["型番"].ToString() == dtPrintData.Rows[intCnt]["型番"].ToString())
                    {
                        dtPrintDataNew.Rows.Add(dtPrintData.Rows[intCnt]["型番"].ToString(),
                                                dtPrintData.Rows[intCnt]["単価"].ToString(),
                                                dtPrintData.Rows[intCnt]["仕向先"].ToString(),
                                                dtPrintData.Rows[intCnt]["最終仕入日"].ToString());
                        intMaxRowCnt++;
                    }
                    else
                    {
                        dtPrintDataNew.Rows.Add("",
                                                "",
                                                "",
                                                "");

                        //空白分追加
                        intMaxRowCnt++;

                        dtPrintDataNew.Rows.Add(dtPrintData.Rows[intCnt]["型番"].ToString(),
                                                dtPrintData.Rows[intCnt]["単価"].ToString(),
                                                dtPrintData.Rows[intCnt]["仕向先"].ToString(),
                                                dtPrintData.Rows[intCnt]["最終仕入日"].ToString());
                        intMaxRowCnt++;
                    }

                    //最終行の場合
                    if (intCnt == dtPrintData.Rows.Count - 1)
                    {
                        dtPrintDataNew.Rows.Add("",
                                                "",
                                                "",
                                                "");

                        intMaxRowCnt++;
                    }
                }
            }

            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
                //空白行付きのdatatableを使う
                var outDataAll = dtPrintDataNew.AsEnumerable()
                                 .Select(dat => new
                {
                    TokuSakiKataban       = dat["型番"],
                    TokuSakiTanka         = dat["単価"],
                    TokuSakiShimukesaki   = dat["仕向先"],
                    TokuSakiSaishuShirebi = dat["最終仕入日"]
                }).ToList();


                //リストをデータテーブルに変換
                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 / 57;
                double decimalpart = page % 1;
                if (decimalpart != 0)
                {
                    //小数点以下が0でない場合、+1
                    maxPage = (int)Math.Floor(page) + 1;
                }
                else
                {
                    maxPage = (int)page;
                }

                //ClosedXMLで1行ずつExcelに出力
                //foreach (DataRow drTokuteCheak in dtChkList.Rows)
                for (int i = 0; i < dtChkList.Rows.Count; i++)
                {
                    DataRow drTokuteCheak = dtChkList.Rows[i];

                    //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", "D1").Merge();

                        //ヘッダー出力(表ヘッダー)
                        headersheet.Cell("A3").Value = "型  番";
                        headersheet.Cell("B3").Value = "単  価";
                        headersheet.Cell("C3").Value = "仕向先";
                        headersheet.Cell("D3").Value = "最終仕入日";

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

                        // 列幅の指定
                        headersheet.Column(1).Width = 44;
                        headersheet.Column(2).Width = 15;
                        headersheet.Column(3).Width = 34;
                        headersheet.Column(4).Width = 12;

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

                        // 印刷体裁(A4縦、印刷範囲)
                        headersheet.PageSetup.PaperSize       = XLPaperSize.A4Paper;
                        headersheet.PageSetup.PageOrientation = XLPageOrientation.Default;

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

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

                    // 1セルずつデータ出力
                    for (int colCnt = 1; colCnt <= maxColCnt; colCnt++)
                    {
                        //型番が空の場合
                        if (drTokuteCheak[0].ToString() == "")
                        {
                            // セルの周囲に罫線を引く
                            currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 1).Style
                            .Border.SetLeftBorder(XLBorderStyleValues.Thin);
                            currentsheet.Range(xlsRowCnt, 4, xlsRowCnt, 4).Style
                            .Border.SetRightBorder(XLBorderStyleValues.Thin);
                            currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 4).Style
                            .Border.SetBottomBorder(XLBorderStyleValues.Thin);
                        }
                        //型番がある場合
                        else
                        {
                            string str = drTokuteCheak[colCnt - 1].ToString();

                            //型番の場合
                            if (colCnt == 1)
                            {
                                //型番が同じでない場合
                                if (strKatabanSub != str)
                                {
                                    // セルの左に罫線を引く
                                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 1).Style
                                    .Border.SetLeftBorder(XLBorderStyleValues.Thin);

                                    //縦の上に寄せる
                                    currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Vertical = XLAlignmentVerticalValues.Top;

                                    //左寄せ
                                    currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;

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

                                    strKatabanSub = str;
                                }
                                //型番が同じ場合
                                else
                                {
                                    // セルの左に罫線を引く
                                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 1).Style
                                    .Border.SetLeftBorder(XLBorderStyleValues.Thin);
                                }
                            }
                            //単価の場合
                            else if (colCnt == 2)
                            {
                                //縦の上に寄せる
                                currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Vertical = XLAlignmentVerticalValues.Top;

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

                                //カンマ処理
                                currentsheet.Cell(xlsRowCnt, colCnt).Style.NumberFormat.Format  = "#,0.00";
                                currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;

                                // セルの周囲に罫線を引く
                                currentsheet.Range(xlsRowCnt, 2, xlsRowCnt, 2).Style
                                .Border.SetTopBorder(XLBorderStyleValues.Thin)
                                .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                                .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                                .Border.SetRightBorder(XLBorderStyleValues.Thin);
                            }
                            //仕向先の場合
                            else if (colCnt == 3)
                            {
                                //縦の上に寄せる
                                currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Vertical = XLAlignmentVerticalValues.Top;

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

                                currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;

                                // セルの周囲に罫線を引く
                                currentsheet.Range(xlsRowCnt, 3, xlsRowCnt, 3).Style
                                .Border.SetTopBorder(XLBorderStyleValues.Thin)
                                .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                                .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                                .Border.SetRightBorder(XLBorderStyleValues.Thin);
                            }
                            //最終仕入日の場合
                            else if (colCnt == 4)
                            {
                                //縦の上に寄せる
                                currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Vertical = XLAlignmentVerticalValues.Top;

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

                                currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

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

                    //行の高さ指定
                    currentsheet.Row(xlsRowCnt).Height = 12;

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

                        if (pageCnt <= maxPage)
                        {
                            xlsRowCnt = 3;

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

                    //最終データの場合
                    if (i == dtChkList.Rows.Count + 1)
                    {
                        // セルの周囲に罫線を引く
                        currentsheet.Range(xlsRowCnt, 4, xlsRowCnt, 4).Style
                        .Border.SetTopBorder(XLBorderStyleValues.Thin)
                        .Border.SetBottomBorder(XLBorderStyleValues.Thin)
                        .Border.SetLeftBorder(XLBorderStyleValues.Thin)
                        .Border.SetRightBorder(XLBorderStyleValues.Thin);
                    }

                    rowCnt++;
                    xlsRowCnt++;
                }

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

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

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

                // PDF化の処理
                return(pdf.createPdf(strOutXlsFile, strDateTime, 1));
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #21
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtSoukoIdou">
        ///     倉庫移動確認のデータテーブル</param>
        /// <param name="lstItem">
        ///     検索条件List
        ///     lstItem[0]  営業所,
        ///     lstItem[1]  伝票年月日Start,
        ///     lstItem[2]  伝票年月日End,
        ///     lstItem[3]  大分類名称,
        ///     lstItem[4]  品名・型番,
        ///     lstItem[5]  備考,
        /// </param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtSoukoIdou, List <string> lstItem)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            try
            {
                CreatePdf pdf = new CreatePdf();

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

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

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


                //Linqで必要なデータをselect
                var outDataAll = dtSoukoIdou.AsEnumerable()
                                 .Select(dat => new
                {
                    denpyoYmd = dat["年月日"],
                    denpyoNo  = dat["伝票番号"],
                    syoriName = dat["処理名"],
                    syukaName = dat["区分名"],
                    maker     = dat["メーカー"],
                    kataban   = dat["品名型式"],
                    suuryo    = (decimal)dat["数量"],
                    iraiName  = dat["依頼者名"],
                    juchuNo   = dat["受注番号"]
                }).ToList();

                // リストをデータテーブルに変換
                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 / 44;
                double decimalpart = page % 1;
                if (decimalpart != 0)
                {
                    // 小数点以下が0でない場合、+1
                    maxPage = (int)Math.Floor(page) + 1;
                }
                else
                {
                    maxPage = (int)page;
                }

                // ClosedXMLで1行ずつExcelに出力
                foreach (DataRow drSiireCheak 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", "I1").Merge();

                        // 担当者名、仕入先名、伝票年月日、大分類名、中分類名、品名・型番、備考出力(A2のセル)
                        IXLCell unitCell = headersheet.Cell("A2");
                        unitCell.Value = "営業所:" + lstItem[0] + " 伝票年月日:" + lstItem[1] + "~" + lstItem[2] +
                                         " 大分類:" + lstItem[3] + " 品名・型番:" + lstItem[4] + " 備考:" + lstItem[5];
                        unitCell.Style.Font.FontSize = 10;

                        // ヘッダー出力(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.Range("A3", "I3").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

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

                        // セルの背景色
                        headersheet.Range("A3", "I3").Style.Fill.BackgroundColor = XLColor.LightGray;

                        // 列幅の指定
                        headersheet.Column(1).Width = 12;         // 日付
                        headersheet.Column(2).Width = 8;          // 伝票番号
                        headersheet.Column(3).Width = 14;         // 処理名
                        headersheet.Column(4).Width = 14;         // 区分名
                        headersheet.Column(5).Width = 14;         // メーカー
                        headersheet.Column(6).Width = 40;         // 品名・型式
                        headersheet.Column(7).Width = 8;          // 数量
                        headersheet.Column(8).Width = 14;         // 依頼者名
                        headersheet.Column(9).Width = 8;          // 受注番号

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

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

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

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

                        // 数量、金額セルの処理
                        if (colCnt == 7)
                        {
                            // 3桁毎に","を挿入する
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.NumberFormat.SetFormat("#,##0.00");
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }

                        // 伝票番号、発注番号、受注番号の場合
                        if (colCnt == 2 || colCnt == 9)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }

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

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

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

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

                    rowCnt++;
                    xlsRowCnt++;
                }

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

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

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

                // PDF化の処理
                return(pdf.createPdf(strOutXlsFile, strDateTime, 1));
            }
            catch
            {
                throw;
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #22
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtSiireJisseki">
        ///     仕入実績確認のデータテーブル</param>
        /// <param name="lstItem">
        ///     検索条件List
        ///     lstItem[0]  伝票年月日Start,
        ///     lstItem[1]  伝票年月日End,
        ///     lstItem[2]  営業担当者名,
        ///     lstItem[3]  発注者名,
        ///     lstItem[4]  受注者名,
        ///     lstItem[5]  仕入先名称,
        ///     lstItem[6]  大分類名称,
        ///     lstItem[7]  中分類名称,
        ///     lstItem[8]  品名・型番1,
        ///     lstItem[9]  品名・型番2,
        ///     lstItem[10] 品名・型番3,
        ///     lstItem[11] 備考,
        ///     lstItem[12] 得意先名称
        /// </param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtSiireJisseki, List <string> lstItem)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            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 = dtSiireJisseki.AsEnumerable()
                                 .Select(dat => new
                {
                    denpyoYmd  = dat["伝票年月日"],
                    denpyoNo   = dat["伝票番号"],
                    maker      = dat["メーカー"],
                    tantoName  = dat["品名型式"],
                    suuryo     = (decimal)dat["数量"],
                    tanka      = (decimal)dat["仕入単価"],
                    kingaku    = (decimal)dat["仕入金額"],
                    bikou      = dat["備考"],
                    syukaName  = dat["出荷先名"],
                    siireName  = dat["仕入先名"],
                    hachuNo    = dat["発注番号"],
                    hachuTanto = dat["発注担当"],
                    siireTanto = dat["仕入担当"],
                    juchuNo    = dat["受注番号"]
                }).ToList();

                // linqで仕入金額の合計算出
                decimal decKingaku = outDataAll.Select(gokei => gokei.kingaku).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 / 44;
                double decimalpart = page % 1;
                if (decimalpart != 0)
                {
                    // 小数点以下が0でない場合、+1
                    maxPage = (int)Math.Floor(page) + 1;
                }
                else
                {
                    maxPage = (int)page;
                }

                // ClosedXMLで1行ずつExcelに出力
                foreach (DataRow drSiireCheak 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", "N1").Merge();

                        // 担当者名、仕入先名、伝票年月日、大分類名、中分類名、品名・型番、備考出力(A2のセル)
                        IXLCell unitCell = headersheet.Cell("A2");
                        unitCell.Value = "担当者:" + lstItem[3] + " 仕入先:" + lstItem[5] +
                                         " 伝票年月日:" + lstItem[0] + "~" + lstItem[1] + " 大分類:" + lstItem[6] +
                                         " 中分類:" + lstItem[7] + " 品名・型番1:" + lstItem[8] + " 品名・型番2:" + lstItem[9] + " 品名・型番3:" + lstItem[10] +
                                         " 備考:" + lstItem[11];
                        unitCell.Style.Font.FontSize = 10;

                        // ヘッダー出力(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.Cell("N3").Value = "受注番号";

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

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

                        // セルの背景色
                        headersheet.Range("A3", "N3").Style.Fill.BackgroundColor = XLColor.LightGray;

                        // 列幅の指定
                        headersheet.Column(1).Width  = 9;
                        headersheet.Column(2).Width  = 8;
                        headersheet.Column(3).Width  = 14;
                        headersheet.Column(4).Width  = 30;
                        headersheet.Column(5).Width  = 6;
                        headersheet.Column(6).Width  = 12;
                        headersheet.Column(7).Width  = 12;
                        headersheet.Column(8).Width  = 30;
                        headersheet.Column(9).Width  = 20;
                        headersheet.Column(10).Width = 20;
                        headersheet.Column(11).Width = 8;
                        headersheet.Column(12).Width = 10;
                        headersheet.Column(13).Width = 10;
                        headersheet.Column(14).Width = 8;

                        // フォントサイズ変更
                        headersheet.Range("D4:D48").Style.Font.FontSize = 6;
                        headersheet.Range("H4:H48").Style.Font.FontSize = 6;
                        headersheet.Range("I4:I48").Style.Font.FontSize = 6;
                        headersheet.Range("J4:J48").Style.Font.FontSize = 6;

                        // 印刷体裁(A3横、印刷範囲、余白)
                        headersheet.PageSetup.PaperSize       = XLPaperSize.A3Paper;
                        headersheet.PageSetup.PageOrientation = XLPageOrientation.Landscape;
                        headersheet.PageSetup.Margins.Left    = 0.7;
                        headersheet.PageSetup.Margins.Right   = 0.7;

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

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

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

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

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

                        // 伝票番号、発注番号、受注番号の場合
                        if (colCnt == 2 || colCnt == 11 || colCnt == 14)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }

                        // 備考の場合
                        if (colCnt == 8)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        }

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

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

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

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

                    rowCnt++;
                    xlsRowCnt++;
                }

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

                    // セルの結合
                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 6).Merge();
                    currentsheet.Range(xlsRowCnt, 8, xlsRowCnt, 14).Merge();

                    // 1行分のセルの周囲に罫線を引く
                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 14).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();

                // PDF化の処理
                return(pdf.createPdf(strOutXlsFile, strDateTime, 1));
            }
            catch
            {
                throw;
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #23
0
        /// <summary>
        /// F10:Excel出力
        /// </summary>
        private void exportXls()
        {
            // SaveFileDialogクラスのインスタンスを作成
            SaveFileDialog sfd = new SaveFileDialog();

            // ファイル名の指定
            sfd.FileName = "仕入実績確認_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xlsx";
            // デフォルトパス取得(デスクトップ)
            string Init_dir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            //はじめに表示されるフォルダを指定する
            sfd.InitialDirectory = Init_dir;
            // ファイルフィルタの設定
            sfd.Filter = "すべてのファイル(*.*)|*.*";

            try
            {
                // 検索条件格納用
                List <string> lstSearchItem  = new List <string>();
                List <Array>  lstSearchItem2 = new List <Array>();

                DataTable dtSiireJisseki = new DataTable();

                // データチェック
                if (!blnDataCheck())
                {
                    return;
                }

                // ヘッダーに条件を出力する値
                lstSearchItem.Add(labelSet_Siiresaki.ValueLabelText);   //仕入先名
                lstSearchItem.Add(labelSet_Daibunrui.ValueLabelText);   //大分類名
                lstSearchItem.Add(labelSet_Chubunrui.ValueLabelText);   //中分類名

                // ビジネス層のインスタンス生成
                D0320_SiireJissekiKakunin_B siireB = new D0320_SiireJissekiKakunin_B();

                // 検索データをリストに格納
                lstSearchItem  = setSearchList();
                lstSearchItem2 = getRadioBtn();

                // 検索実行
                dtSiireJisseki = siireB.getSiireJissekiList(lstSearchItem, lstSearchItem2);

                if (dtSiireJisseki != null && dtSiireJisseki.Rows.Count > 0)
                {
                    // ダイアログ表示
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        //待機状態
                        Cursor.Current = Cursors.WaitCursor;

                        CreatePdf cpdf = new CreatePdf();

                        // 出力するヘッダを設定
                        string[] header =
                        {
                            "仕入日",
                            "伝票番号",
                            "メーカー",
                            "品名・型式",
                            "数量",
                            "仕入単価",
                            "仕入金額",
                            "備考",
                            "出荷先",
                            "仕入先",
                            "発注番号",
                            "発注担当",
                            "仕入担当",
                            "受注番号",
                        };

                        // Linqで出力対象の項目をSelect
                        // カラム名は以下のようにつける(カラム名でフォーマットを判断するため)
                        // 金額関係:***kingaku
                        // 単価関係:***tanka
                        // 原価:***genka
                        // 数量:***suryo
                        var outDat = dtSiireJisseki.AsEnumerable()
                                     .Select(dat => new
                        {
                            denYmd       = dat["伝票年月日"],
                            denNo        = dat["伝票番号"],
                            maker        = dat["メーカー"],
                            hinkata      = dat["品名型式"],
                            suryo        = dat["数量"],
                            siireTanka   = dat["仕入単価"],
                            siireKingaku = dat["仕入金額"],
                            biko         = dat["備考"],
                            shukaName    = dat["出荷先名"],
                            siireName    = dat["仕入先名"],
                            hachuNo      = dat["発注番号"],
                            hachuName    = dat["発注担当"],
                            siireTanto   = dat["仕入担当"],
                            juchuNo      = dat["受注番号"],
                        }).ToList();

                        // listをDataTableに変換
                        DataTable dtSiireJiseki = cpdf.ConvertToDataTable(outDat);

                        string outFile = sfd.FileName;

                        cpdf.DtToXls(dtSiireJiseki, "仕入実績確認", outFile, 3, 1, header);

                        this.Cursor = Cursors.Default;

                        // メッセージボックスの処理、Excel作成完了の場合のウィンドウ(OK)
                        BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excelファイルを作成しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_INFOMATION);
                        basemessagebox.ShowDialog();
                    }
                }
                else
                {
                    // メッセージボックスの処理、項目が空の場合のウィンドウ(OK)
                    BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_INPUT, "対象のデータはありません", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                    basemessagebox.ShowDialog();
                    return;
                }
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;

                // エラーロギング
                new CommonException(ex);

                // Excel出力失敗メッセージ
                BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excel出力に失敗しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                basemessagebox.ShowDialog();

                return;
            }
        }
コード例 #24
0
        ///<summary>
        ///     F10:Excel出力
        ///</summary>
        private void excelTokuteimukesakiTanka()
        {
            //SQL実行時に取り出したデータを入れる用
            DataTable dtSetCd_B = new DataTable();

            try
            {
                dtSetCd_B = (DataTable)gridTokuteimukesakiTanka.DataSource;

                BaseMessageBox basemessagebox;
                //取得したデータがない場合
                if (dtSetCd_B == null || dtSetCd_B.Rows.Count == 0)
                {
                    //例外発生メッセージ(OK)
                    basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_ERROR, "対象のデータはありません", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                    basemessagebox.ShowDialog();
                    return;
                }

                // SaveFileDialogクラスのインスタンスを作成
                SaveFileDialog sfd = new SaveFileDialog();
                // ファイル名の指定
                sfd.FileName = "CBC単価マスタ_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xlsx";
                // デフォルトパス取得(デスクトップ)
                string Init_dir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                //はじめに表示されるフォルダを指定する
                sfd.InitialDirectory = Init_dir;
                // ファイルフィルタの設定
                sfd.Filter = "すべてのファイル(*.*)|*.*";

                //ダイアログを表示する
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    CreatePdf cpdf = new CreatePdf();

                    //Linqで必要なデータをselect
                    var outDataAll = dtSetCd_B.AsEnumerable()
                                     .Select(dat => new
                    {
                        kataban        = dat["型番"],
                        tanka          = dat["単価"],
                        simukesaki     = dat["仕向先"],
                        saisyuSiireYMD = dat["最終仕入日"],
                    }).ToList();

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

                    string[] header =
                    {
                        "型 番",
                        "単 価",
                        "仕向先",
                        "最終仕入日",
                    };

                    string outFile = sfd.FileName;

                    // Excel作成処理
                    cpdf.DtToXls(dtChkList, "特定向け先単価一覧表", outFile, 3, 1, header);

                    // メッセージボックスの処理、Excel作成完了の場合のウィンドウ(OK)
                    basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excelファイルを作成しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_INFOMATION);
                    basemessagebox.ShowDialog();
                }
            }
            catch (Exception ex)
            {
                //データロギング
                new CommonException(ex);
                //例外発生メッセージ(OK)
                BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_ERROR, CommonTeisu.LABEL_ERROR_MESSAGE, CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                basemessagebox.ShowDialog();
                return;
            }
        }
コード例 #25
0
ファイル: M1200_Group_B.cs プロジェクト: kawabata-neolis/KATO
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtSetCd_B_Input">
        ///     グループのデータテーブル</param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtSetCd_B_Input)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            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 = dtSetCd_B_Input.AsEnumerable()
                                 .Select(dat => new
                {
                    tokuisakiCd   = dat["グループコード"],
                    tokuisakiName = dat["グループ名"],
                }).ToList();

                //リストをデータテーブルに変換
                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 / 44;
                double decimalpart = page % 1;
                if (decimalpart != 0)
                {
                    //小数点以下が0でない場合、+1
                    maxPage = (int)Math.Floor(page) + 1;
                }
                else
                {
                    maxPage = (int)page;
                }

                //ClosedXMLで1行ずつExcelに出力
                foreach (DataRow drSiireCheak 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", "B1").Merge();

                        //ヘッダー出力(表ヘッダー)
                        headersheet.Cell("A3").Value = "コード";
                        headersheet.Cell("B3").Value = "グループ名";

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

                        // 列幅の指定
                        headersheet.Column(1).Width = 10;
                        headersheet.Column(2).Width = 45;

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

                        // 印刷体裁(A4横、印刷範囲)
                        headersheet.PageSetup.PaperSize       = XLPaperSize.A4Paper;
                        headersheet.PageSetup.PageOrientation = XLPageOrientation.Default;

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

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

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

                        //コードの場合
                        if (colCnt == 1)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }
                        else
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        }

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

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

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

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

                    rowCnt++;
                    xlsRowCnt++;
                }

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

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

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

                // PDF化の処理
                return(pdf.createPdf(strOutXlsFile, strDateTime, 1));
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #26
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtSetCd_B_Input">
        ///     得意先元帳確認の印刷データテーブル</param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtSetCd_B_Input, List <string> lstPrintData)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            //合計値の確保用
            decimal decUriKin = 0;  //売上金額
            decimal decNyukin = 0;  //入金金額

            //得意先コードの表示とページ変えのチェック用
            string strTokuiCd = "";

            //得意先名の表示用
            string strTokuiName = "";

            //担当者名の表示用
            string strTantoName = "";

            try
            {
                CreatePdf pdf = new CreatePdf();

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


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

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

                // Linqで必要なデータをselect
                var outDataAll = dtSetCd_B_Input.AsEnumerable()
                                 .Select(dat => new
                {
                    TokuiCd         = dat["得意先コード"], //[0]ヘッダー表示のみ使用
                    TokuiName       = dat["得意先名"],   //[1]ヘッダー表示のみ使用
                    TokuiYMD        = dat["年月日"],    //[2]
                    Tokuikbn        = dat["取引区分名"],  //[3]
                    TokuiShohinName = dat["商品名"],    //[4]
                    TokuiSu         = dat["数量"],     //[5]
                    TokuiTanka      = dat["売上単価"],   //[6]
                    TokuiUrikin     = dat["売上金額"],   //[7]
                    TokuiNyukin     = dat["入金金額"],   //[8]
                    TokuiSashiZan   = dat["差引残高"],   //[9]
                    TokuiTantoName  = dat["担当者名"],   //[10]ヘッダー表示のみ使用
                    TokuiBiko       = dat["備考"],     //[11]
                }).ToList();

                // リストをデータテーブルに変換
                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 = 5;  // Excel出力行カウント(開始は出力行)
                int maxPage   = 0;  // 最大ページ数

                // 最大ページ数の行数カウント用
                int rowCntMaxPage    = 1;
                int xlsRowCntMaxPage = 5;


                // 最大ページ数の取得
                foreach (DataRow drTokuiCheak in dtChkList.Rows)
                {
                    // 2ページ目以降
                    if (rowCntMaxPage > 1)
                    {
                        // 次の得意先が違う場合にシート作成
                        if (strTokuiCd != drTokuiCheak[0].ToString())
                        {
                            strTokuiCd = drTokuiCheak[0].ToString();
                            //合計分の行を追加
                            maxPage++;
                            xlsRowCntMaxPage = 5;
                        }
                    }

                    // 1ページ目のシート作成
                    if (rowCntMaxPage == 1)
                    {
                        maxPage++;
                        strTokuiCd = drTokuiCheak[0].ToString();
                    }

                    //44行に達した場合
                    if (xlsRowCntMaxPage == 44)
                    {
                        maxPage++;

                        xlsRowCntMaxPage = 4;
                    }
                    //maxPage++;
                    rowCntMaxPage++;
                    xlsRowCntMaxPage++;
                }

                // ClosedXMLで1行ずつExcelに出力
                foreach (DataRow drTokuiCheak in dtChkList.Rows)
                {
                    //2ページ目以降
                    if (rowCnt > 1)
                    {
                        //次の得意先が違う場合にシート作成
                        if (strTokuiCd != drTokuiCheak[0].ToString())
                        {
                            //マージ
                            currentsheet.Range("A" + xlsRowCnt, "E" + xlsRowCnt).Merge();
                            currentsheet.Range("H" + xlsRowCnt, "I" + xlsRowCnt).Merge();

                            currentsheet.Row(xlsRowCnt).Height = 10;

                            currentsheet.Cell(xlsRowCnt, 1).Value = "■■■ 合 計 ■■■";
                            currentsheet.Cell(xlsRowCnt, 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

                            currentsheet.Cell(xlsRowCnt, 6).Value = decUriKin.ToString();    //売上金額
                            currentsheet.Cell(xlsRowCnt, 7).Value = decNyukin.ToString();    //入金金額

                            //最終行、各項目のカンマ処理と文字寄せ
                            for (int intCnt = 6; intCnt < 8; intCnt++)
                            {
                                currentsheet.Cell(xlsRowCnt, intCnt).Style.NumberFormat.Format  = "#,0";
                                currentsheet.Cell(xlsRowCnt, intCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                            }

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

                            //初期化
                            decUriKin = 0;
                            decNyukin = 0;

                            //得意先コードと名前の確保
                            strTokuiCd   = drTokuiCheak[0].ToString();
                            strTokuiName = drTokuiCheak[1].ToString();
                            strTantoName = drTokuiCheak[10].ToString();

                            pageCnt++;

                            // ヘッダー出力(表ヘッダー上)
                            headersheet.Cell("A3").Value = strTokuiCd.Trim() + " " + strTokuiName.Trim(); //取引先名と取引先コード
                            headersheet.Cell("D3").Value = "担当者: " + strTantoName.Trim();                 //担当者名

                            xlsRowCnt = 5;

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

                    //1ページ目のシート作成
                    if (rowCnt == 1)
                    {
                        //得意先コードと名前の確保
                        strTokuiCd   = drTokuiCheak[0].ToString();
                        strTokuiName = drTokuiCheak[1].ToString();
                        strTantoName = drTokuiCheak[10].ToString();

                        pageCnt++;

                        // タイトル出力(中央揃え、セル結合)
                        IXLCell titleCell = headersheet.Cell("A1");
                        titleCell.Value = "得 意 先 元 帳";
                        titleCell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                        titleCell.Style.Font.FontSize        = 16;
                        headersheet.Range("A1", "I1").Merge();

                        // ヘッダー出力(表ヘッダー)
                        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.Row(4).Height = 10;

                        // 列幅の指定
                        headersheet.Column(1).Width = 10;   //年月日
                        headersheet.Column(2).Width = 9;    //区分
                        headersheet.Column(3).Width = 80;   //商品名
                        headersheet.Column(4).Width = 11.5; //数量
                        headersheet.Column(5).Width = 11.5; //単価
                        headersheet.Column(6).Width = 11.5; //売上金額
                        headersheet.Column(7).Width = 11.5; //入金金額
                        headersheet.Column(8).Width = 11.5; //差引残高
                        headersheet.Column(9).Width = 30;   //備考

                        //ヘッダー文字位置の指定
                        headersheet.Column(1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;  //年月日
                        headersheet.Column(2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;  //区分
                        headersheet.Column(3).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;  //商品名
                        headersheet.Column(4).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;  //数量
                        headersheet.Column(5).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;  //単価
                        headersheet.Column(6).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;  //売上金額
                        headersheet.Column(7).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;  //入金金額
                        headersheet.Column(8).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;  //差引残高
                        headersheet.Column(9).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;  //備考

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

                        //背景を灰色にする
                        headersheet.Range("A4", "I4").Style.Fill.BackgroundColor = XLColor.LightGray;

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

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

                        //マージ
                        currentsheet.Range("A3", "C3").Merge();
                        currentsheet.Range("D3", "E3").Merge();
                        currentsheet.Range("F3", "G3").Merge();

                        // ヘッダー出力(表ヘッダー上)
                        headersheet.Cell("A3").Value = strTokuiCd + " " + strTokuiName;                     //取引先名と取引先コード
                        headersheet.Cell("D3").Value = "担当者: " + strTantoName;                              //担当者名
                        headersheet.Cell("F3").Value = "(外税 請求単位)";                                         //(外税 請求単位)の記入
                        headersheet.Cell("I3").Value = "対象期間:" + lstPrintData[2] + " ~ " + lstPrintData[3]; //対象期間

                        // ヘッダー列
                        headersheet.Range("A3", "C3").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        headersheet.Range("D3", "F3").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        headersheet.Range("I3").Style.Alignment.Horizontal       = XLAlignmentHorizontalValues.Right;

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

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

                        //行の高さ指定
                        currentsheet.Row(xlsRowCnt).Height = 10;

                        //数量、単価の場合
                        if (colCnt == 6 || colCnt == 7)
                        {
                            //空白以外の場合
                            if (str != "")
                            {
                                //小数点以下第二位まで表示
                                currentsheet.Cell(xlsRowCnt, colCnt - 2).Style.NumberFormat.Format = "#,0.00";
                            }

                            currentsheet.Cell(xlsRowCnt, colCnt - 2).Value = str;
                            currentsheet.Cell(xlsRowCnt, colCnt - 2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;

                            //0の場合
                            if (currentsheet.Cell(xlsRowCnt, colCnt - 2).Value.ToString() == "0")
                            {
                                //空にする
                                currentsheet.Cell(xlsRowCnt, colCnt - 2).Value = "";
                            }
                        }
                        //売上金額、入金金額、割引残高の場合
                        else if (colCnt >= 8 && colCnt <= 10)
                        {
                            //空白以外の場合
                            if (str != "")
                            {
                                //余計な小数点以下数値を取り除く
                                str = Math.Floor(decimal.Parse(str)).ToString();

                                //空白以外の場合
                                if (str != "0")
                                {
                                    //カンマつけ
                                    currentsheet.Cell(xlsRowCnt, colCnt - 2).Style.NumberFormat.Format = "#,0";
                                }
                                //0の場合は空白
                                else if (str == "0")
                                {
                                    str = "";
                                }
                            }

                            currentsheet.Cell(xlsRowCnt, colCnt - 2).Value = str;
                            currentsheet.Cell(xlsRowCnt, colCnt - 2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;

                            //0の場合
                            if (currentsheet.Cell(xlsRowCnt, colCnt - 2).ToString() == "0")
                            {
                                //空にする
                                currentsheet.Cell(xlsRowCnt, colCnt - 2).Value = "";
                            }
                        }
                        //得意先コード、得意先名、担当者名はスルー
                        else if (colCnt == 1 || colCnt == 2 || colCnt == 11)
                        {
                            //スルー
                        }
                        //備考
                        else if (colCnt == 12)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt - 3).Value = str;
                            currentsheet.Cell(xlsRowCnt, colCnt - 3).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        }
                        //年月日、区分、商品名の場合
                        else
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt - 2).Value = str;
                            currentsheet.Cell(xlsRowCnt, colCnt - 2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        }
                    }

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

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

                        xlsRowCnt = 4;

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

                    rowCnt++;
                    xlsRowCnt++;

                    //各合計値を入れる
                    decUriKin = decUriKin + decimal.Parse(drTokuiCheak[7].ToString());
                    decNyukin = decNyukin + decimal.Parse(drTokuiCheak[8].ToString());

                    //最終行の場合
                    if (rowCnt > dtChkList.Rows.Count)
                    {
                        //マージ
                        currentsheet.Range("A" + xlsRowCnt, "E" + xlsRowCnt).Merge();

                        currentsheet.Row(xlsRowCnt).Height = 10;

                        currentsheet.Cell(xlsRowCnt, 1).Value = "◆◆◆ 合 計 ◆◆◆";
                        currentsheet.Cell(xlsRowCnt, 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

                        currentsheet.Cell(xlsRowCnt, 6).Value = decUriKin.ToString();    //売上金額
                        currentsheet.Cell(xlsRowCnt, 7).Value = decNyukin.ToString();    //入金金額

                        //最終行、各項目のカンマ処理と文字寄せ
                        for (int intCnt = 6; intCnt < 8; intCnt++)
                        {
                            currentsheet.Cell(xlsRowCnt, intCnt).Style.NumberFormat.Format  = "#,0";
                            currentsheet.Cell(xlsRowCnt, intCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }

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

                        //初期化
                        decUriKin = 0;
                        decNyukin = 0;
                    }
                }

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

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

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

                // PDF化の処理
                return(pdf.createPdf(strOutXlsFile, strDateTime, 1));
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #27
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// 総合計を取得
        /// </summary>
        /// <param name="dtUriage">売上のデータテーブル</param>
        /// <param name="dtList">参照型 データテーブル</param>
        /// -----------------------------------------------------------------------------
        public decimal[] getGoukeiKingaku(DataTable dtUriage, ref DataTable dtList)
        {
            //Linqで必要なデータをselect
            var outDataAll = dtUriage.AsEnumerable()
                             .Select(dat => new
            {
                groupName      = dat["グループ名"],
                tantoName      = dat["担当者名"],
                uriage1        = (decimal)dat["売上額1"],
                arari1         = (decimal)dat["粗利額1"],
                hiritsu1       = (decimal)dat["前年比率1"],
                uriage2        = (decimal)dat["売上額2"],
                arari2         = (decimal)dat["粗利額2"],
                hiritsu2       = (decimal)dat["前年比率2"],
                uriage3        = (decimal)dat["売上額3"],
                arari3         = (decimal)dat["粗利額3"],
                hiritsu3       = (decimal)dat["前年比率3"],
                uriage4        = (decimal)dat["売上額4"],
                arari4         = (decimal)dat["粗利額4"],
                hiritsu4       = (decimal)dat["前年比率4"],
                uriage5        = (decimal)dat["売上額5"],
                arari5         = (decimal)dat["粗利額5"],
                hiritsu5       = (decimal)dat["前年比率5"],
                uriage6        = (decimal)dat["売上額6"],
                arari6         = (decimal)dat["粗利額6"],
                hiritsu6       = (decimal)dat["前年比率6"],
                uriageKamiki   = (decimal)dat["上期売上額"],
                arariKamiki    = (decimal)dat["上期粗利額"],
                hiritsuKamiki  = (decimal)dat["上期前年比率"],
                uriage7        = (decimal)dat["売上額7"],
                arari7         = (decimal)dat["粗利額7"],
                hiritsu7       = (decimal)dat["前年比率7"],
                uriage8        = (decimal)dat["売上額8"],
                arari8         = (decimal)dat["粗利額8"],
                hiritsu8       = (decimal)dat["前年比率8"],
                uriage9        = (decimal)dat["売上額9"],
                arari9         = (decimal)dat["粗利額9"],
                hiritsu9       = (decimal)dat["前年比率9"],
                uriage10       = (decimal)dat["売上額10"],
                arari10        = (decimal)dat["粗利額10"],
                hiritsu10      = (decimal)dat["前年比率10"],
                uriage11       = (decimal)dat["売上額11"],
                arari11        = (decimal)dat["粗利額11"],
                hiritsu11      = (decimal)dat["前年比率11"],
                uriage12       = (decimal)dat["売上額12"],
                arari12        = (decimal)dat["粗利額12"],
                hiritsu12      = (decimal)dat["前年比率12"],
                uriageSimoki   = (decimal)dat["下期売上額"],
                arariSimoki    = (decimal)dat["下期粗利額"],
                hiritsuSimoki  = (decimal)dat["下期前年比率"],
                arariZen1      = (decimal)dat["前年粗利額1"],
                arariZen2      = (decimal)dat["前年粗利額2"],
                arariZen3      = (decimal)dat["前年粗利額3"],
                arariZen4      = (decimal)dat["前年粗利額4"],
                arariZen5      = (decimal)dat["前年粗利額5"],
                arariZen6      = (decimal)dat["前年粗利額6"],
                arariZen7      = (decimal)dat["前年粗利額7"],
                arariZen8      = (decimal)dat["前年粗利額8"],
                arariZen9      = (decimal)dat["前年粗利額9"],
                arariZen10     = (decimal)dat["前年粗利額10"],
                arariZen11     = (decimal)dat["前年粗利額11"],
                arariZen12     = (decimal)dat["前年粗利額12"],
                arariZenKamiki = (decimal)dat["上期前年粗利額"],
                arariZenSimoki = (decimal)dat["下期前年粗利額"]
            }).ToList();

            // linqで合計算出
            decimal[] decKingaku = new decimal[42];
            decKingaku[0]  = outDataAll.Select(gokei => gokei.uriage1).Sum();
            decKingaku[1]  = outDataAll.Select(gokei => gokei.arari1).Sum();
            decKingaku[2]  = outDataAll.Select(gokei => gokei.arariZen1).Sum();
            decKingaku[3]  = outDataAll.Select(gokei => gokei.uriage2).Sum();
            decKingaku[4]  = outDataAll.Select(gokei => gokei.arari2).Sum();
            decKingaku[5]  = outDataAll.Select(gokei => gokei.arariZen2).Sum();
            decKingaku[6]  = outDataAll.Select(gokei => gokei.uriage3).Sum();
            decKingaku[7]  = outDataAll.Select(gokei => gokei.arari3).Sum();
            decKingaku[8]  = outDataAll.Select(gokei => gokei.arariZen3).Sum();
            decKingaku[9]  = outDataAll.Select(gokei => gokei.uriage4).Sum();
            decKingaku[10] = outDataAll.Select(gokei => gokei.arari4).Sum();
            decKingaku[11] = outDataAll.Select(gokei => gokei.arariZen4).Sum();
            decKingaku[12] = outDataAll.Select(gokei => gokei.uriage5).Sum();
            decKingaku[13] = outDataAll.Select(gokei => gokei.arari5).Sum();
            decKingaku[14] = outDataAll.Select(gokei => gokei.arariZen5).Sum();
            decKingaku[15] = outDataAll.Select(gokei => gokei.uriage6).Sum();
            decKingaku[16] = outDataAll.Select(gokei => gokei.arari6).Sum();
            decKingaku[17] = outDataAll.Select(gokei => gokei.arariZen6).Sum();
            decKingaku[18] = outDataAll.Select(gokei => gokei.uriageKamiki).Sum();
            decKingaku[19] = outDataAll.Select(gokei => gokei.arariKamiki).Sum();
            decKingaku[20] = outDataAll.Select(gokei => gokei.arariZenKamiki).Sum();
            decKingaku[21] = outDataAll.Select(gokei => gokei.uriage7).Sum();
            decKingaku[22] = outDataAll.Select(gokei => gokei.arari7).Sum();
            decKingaku[23] = outDataAll.Select(gokei => gokei.arariZen7).Sum();
            decKingaku[24] = outDataAll.Select(gokei => gokei.uriage8).Sum();
            decKingaku[25] = outDataAll.Select(gokei => gokei.arari8).Sum();
            decKingaku[26] = outDataAll.Select(gokei => gokei.arariZen8).Sum();
            decKingaku[27] = outDataAll.Select(gokei => gokei.uriage9).Sum();
            decKingaku[28] = outDataAll.Select(gokei => gokei.arari9).Sum();
            decKingaku[29] = outDataAll.Select(gokei => gokei.arariZen9).Sum();
            decKingaku[30] = outDataAll.Select(gokei => gokei.uriage10).Sum();
            decKingaku[31] = outDataAll.Select(gokei => gokei.arari10).Sum();
            decKingaku[32] = outDataAll.Select(gokei => gokei.arariZen10).Sum();
            decKingaku[33] = outDataAll.Select(gokei => gokei.uriage11).Sum();
            decKingaku[34] = outDataAll.Select(gokei => gokei.arari11).Sum();
            decKingaku[35] = outDataAll.Select(gokei => gokei.arariZen11).Sum();
            decKingaku[36] = outDataAll.Select(gokei => gokei.uriage12).Sum();
            decKingaku[37] = outDataAll.Select(gokei => gokei.arari12).Sum();
            decKingaku[38] = outDataAll.Select(gokei => gokei.arariZen12).Sum();
            decKingaku[39] = outDataAll.Select(gokei => gokei.uriageSimoki).Sum();
            decKingaku[40] = outDataAll.Select(gokei => gokei.arariSimoki).Sum();
            decKingaku[41] = outDataAll.Select(gokei => gokei.arariZenSimoki).Sum();

            // リストをデータテーブルに変換
            CreatePdf pdf = new CreatePdf();

            dtList = pdf.ConvertToDataTable(outDataAll);

            return(decKingaku);
        }
コード例 #28
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtSetCd_B_Input">
        ///     担当者別伝票処理件数のデータテーブル</param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtSetCd_B_Input, DateTime dateOpen, DateTime dateClose, string strTantoshaCdOpen, string strTantoshaCdClose, List <string> lstKei)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            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 = dtSetCd_B_Input.AsEnumerable()
                                 .Select(dat => new
                {
                    tantoName = (String)dat["担当者名"],
                    juchu     = dat["受注計"],
                    hachu     = dat["発注計"],
                    shire     = dat["仕入計"],
                    uriage    = dat["売上計"],
                    nyuko     = dat["入庫計"],
                    shuko     = dat["出庫計"],
                    tanto     = dat["担当計"],
                }).ToList();

                //リストをデータテーブルに変換
                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 = 5;  // Excel出力行カウント(開始は出力行)
                int maxPage   = 0;  // 最大ページ数

                //各セルの縦サイズ指定
                headersheet.RowHeight = 14;

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

                //ClosedXMLで1行ずつExcelに出力
                foreach (DataRow row 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", "H1").Merge();

                        //タイトル出力(中央揃え、セル結合)
                        IXLCell YMDtitle = headersheet.Cell("A3");
                        YMDtitle.Value = "伝票年月日:" + dateOpen.ToString("yyyy年MM月dd日") + " ~ " + dateClose.ToString("yyyy年MM月dd日") + "  担当者コード:" + strTantoshaCdOpen + " ~ " + strTantoshaCdClose;
                        YMDtitle.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        YMDtitle.Style.Font.FontSize        = 9;
                        headersheet.Range("A3", "E3").Merge();

                        //ヘッダー出力(表ヘッダー)
                        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.Range("A4", "H4").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

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

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

                        //列幅の指定
                        headersheet.Column(1).Width = 20;
                        headersheet.Column(2).Width = 16;
                        headersheet.Column(3).Width = 16;
                        headersheet.Column(4).Width = 16;
                        headersheet.Column(5).Width = 16;
                        headersheet.Column(6).Width = 16;
                        headersheet.Column(7).Width = 16;
                        headersheet.Column(8).Width = 16;

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

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

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

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

                        //decimalに変換できるかどうかを見る用
                        decimal decTry = 0;

                        //decimal型に変換できるか
                        if (decimal.TryParse(str, out decTry))
                        {
                            str = ((int)Math.Floor(decimal.Parse(str))).ToString();

                            //0の場合空白文字に
                            if (str == "0")
                            {
                                str = "";
                            }
                            else
                            {
                                int intChange = (int)Math.Floor(double.Parse(str));
                                str = string.Format("{0:#,0}", intChange);
                            }
                        }

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

                        //担当者の場合
                        if (colCnt == 1)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        }
                        else
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }
                    }

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

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

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

                    rowCnt++;
                    xlsRowCnt++;
                }

                if (dtChkList.Rows.Count > 0)
                {
                    //セル結合、中央揃え
                    IXLCell sumcell = currentsheet.Cell(xlsRowCnt, 1);
                    sumcell.Value = "◆◆  合  計  ◆◆";

                    //金額セルの処理(3桁毎に","を挿入する)
                    for (int cnt = 0; cnt < 7; cnt++)
                    {
                        IXLCell kingakuCell = currentsheet.Cell(xlsRowCnt, cnt + 2);
                        kingakuCell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;

                        int intChange = (int)Math.Floor(double.Parse(lstKei[cnt]));
                        kingakuCell.Value = string.Format("{0:#,0}", intChange);
                    }

                    //1行分のセルの周囲に罫線を引く
                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 8).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();

                //PDF化の処理
                return(pdf.createPdf(strOutXlsFile, strDateTime, 1));
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                //Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                //Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #29
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtSetCd_B_Input">
        ///     メーカーのデータテーブル</param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtSetCd_B_Input)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            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 = dtSetCd_B_Input.AsEnumerable()
                                 .Select(dat => new
                {
                    torihikiCd   = (String)dat["取引先コード"],
                    torihikiName = dat["取引先名称"],
                    torihikiKana = dat["カナ"],
                    yubin        = dat["郵便番号"],
                    jusho1       = dat["住所1"],
                    jusho2       = dat["住所2"],
                    denwa        = dat["電話番号"],
                    fax          = dat["FAX番号"],
                }).ToList();

                //リストをデータテーブルに変換
                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;  // 最大ページ数

                //各セルの縦サイズ指定
                headersheet.RowHeight = 14;

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

                //ClosedXMLで1行ずつExcelに出力
                foreach (DataRow drSiireCheak 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", "H1").Merge();

                        //ヘッダー出力(表ヘッダー)
                        headersheet.Cell("A3").Value = "コード";
                        headersheet.Cell("B3").Value = "取引先";
                        headersheet.Cell("C3").Value = "カナ";
                        headersheet.Cell("D3").Value = "郵便番号";
                        headersheet.Cell("E3").Value = "住所1";
                        headersheet.Cell("F3").Value = "住所2";
                        headersheet.Cell("G3").Value = "電話番号";
                        headersheet.Cell("H3").Value = "FAX";

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

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

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

                        // 列幅の指定
                        headersheet.Column(1).Width = 5;
                        headersheet.Column(2).Width = 26;
                        headersheet.Column(3).Width = 16;
                        headersheet.Column(4).Width = 8;
                        headersheet.Column(5).Width = 28;
                        headersheet.Column(6).Width = 28;
                        headersheet.Column(7).Width = 11;
                        headersheet.Column(8).Width = 11;

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

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

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

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

                        //二桁の0パディングをさせる
                        currentsheet.Cell(xlsRowCnt, colCnt).Style.NumberFormat.SetFormat("0000");

                        //左に寄せる
                        currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;

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

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

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

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

                    rowCnt++;
                    xlsRowCnt++;
                }

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

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

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

                // PDF化の処理
                return(pdf.createPdf(strOutXlsFile, strDateTime, 1));
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #30
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtShohinList">
        ///     仕入実績確認のデータテーブル</param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtShohinList, List <string> lstItem)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            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 = dtShohinList.AsEnumerable()
                                 .Select(dat => new
                {
                    daibunrui     = dat["大分類名"],
                    chubunrui     = dat["中分類名"],
                    maker         = dat["メーカー名"],
                    kataban       = dat["品名型式"],
                    teika         = (decimal)dat["定価"],
                    baika         = (decimal)dat["標準売価"],
                    siireTanak    = (decimal)dat["仕入単価"],
                    hyokaTanka    = (decimal)dat["評価単価"],
                    tateneTanka   = (decimal)dat["建値仕入単価"],
                    tanabanHonsha = dat["棚番本社"],
                    tanabanGifu   = dat["棚番岐阜"],
                }).ToList();

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

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

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

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

                        // タイトル出力(中央揃え、セル結合)
                        IXLCell titleCell = headersheet.Cell("A1");
                        titleCell.Value = "商品単価一覧";
                        titleCell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                        titleCell.Style.Font.FontSize        = 14.5;
                        headersheet.Range("A1", "K1").Merge();

                        // ヘッダー出力(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.Range("A3", "K3").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

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

                        // 列幅の指定
                        headersheet.Column(1).Width  = 14;
                        headersheet.Column(2).Width  = 14;
                        headersheet.Column(3).Width  = 14;
                        headersheet.Column(4).Width  = 40;
                        headersheet.Column(5).Width  = 12;
                        headersheet.Column(6).Width  = 12;
                        headersheet.Column(7).Width  = 12;
                        headersheet.Column(8).Width  = 12;
                        headersheet.Column(9).Width  = 12;
                        headersheet.Column(10).Width = 10;
                        headersheet.Column(11).Width = 10;

                        // 印刷体裁(B4横、印刷範囲)
                        headersheet.PageSetup.PaperSize       = XLPaperSize.B4Paper;
                        headersheet.PageSetup.PageOrientation = XLPageOrientation.Landscape;

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

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

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

                        // 品名・型式セルの処理
                        if (colCnt == 4)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        }

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

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

                        // 棚番セルの処理
                        if (colCnt == 10 || colCnt == 11)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        }

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

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

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

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

                    rowCnt++;
                    xlsRowCnt++;
                }

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

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

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

                // PDF化の処理
                return(pdf.createPdf(strOutXlsFile, strDateTime, 1));
            }
            catch
            {
                throw;
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #31
0
        ///<summary>
        ///     F10:Excel出力
        ///</summary>
        private void excelTanaorosiKinyuuhyo()
        {
            // データ検索用
            List <string> lstSearchItem = new List <string>();

            // データ検索用(プロシージャ用)
            List <string> lstSearchItemProc = new List <string>();

            // データチェック
            if (!blnDataCheack())
            {
                return;
            }

            // 検索するデータをリストに格納
            lstSearchItem.Add(txtYmd.Text);
            lstSearchItem.Add(labelSet_Eigyosho.CodeTxtText);
            lstSearchItem.Add(labelSet_Daibunrui.CodeTxtText);
            lstSearchItem.Add(labelSet_Chubunrui.CodeTxtText);
            lstSearchItem.Add(labelSet_Maker.CodeTxtText);
            lstSearchItem.Add(txtTanabanFrom.Text);
            lstSearchItem.Add(txtTanabanTo.Text);

            // 検索するデータをリストに格納(プロシージャ用)
            lstSearchItemProc.Add(txtYmd.Text);
            lstSearchItemProc.Add(labelSet_Eigyosho.CodeTxtText);
            lstSearchItemProc.Add(labelSet_Daibunrui.CodeTxtText);
            lstSearchItemProc.Add((radSort.judCheckBtn() + 1).ToString());

            // ビジネス層のインスタンス生成
            F0570_TanaorosiKinyuhyoPrint_B tanaorosiPrint_B = new F0570_TanaorosiKinyuhyoPrint_B();

            try
            {
                BaseMessageBox basemessagebox;

                // 印刷するにチェックが入っていない場合
                if (chkPrintOnly.Checked == false)
                {
                    //待機状態
                    Cursor.Current = Cursors.WaitCursor;

                    // 棚卸記入表の件数を取得
                    DataTable dtTanaorosiCount = tanaorosiPrint_B.getTanaorosiCount(lstSearchItem);

                    //元に戻す
                    Cursor.Current = Cursors.Default;

                    // 対象データがある場合
                    if (dtTanaorosiCount != null && dtTanaorosiCount.Rows.Count > 0)
                    {
                        // 件数が1件以上の場合
                        if (int.Parse(dtTanaorosiCount.Rows[0][0].ToString()) > 0)
                        {
                            // メッセージボックスの処理(YES,NO)
                            basemessagebox = new BaseMessageBox(this, "棚卸記入表", "既にデータが作成されています。書き換えますか?", CommonTeisu.BTN_YESNO, CommonTeisu.DIAG_QUESTION);

                            // Noが押された場合
                            if (basemessagebox.ShowDialog() == DialogResult.No)
                            {
                                return;
                            }
                        }
                    }

                    try
                    {
                        //待機状態
                        Cursor.Current = Cursors.WaitCursor;

                        // 棚卸記入表テーブルに追加
                        tanaorosiPrint_B.addTanaorosi(lstSearchItem);

                        //元に戻す
                        Cursor.Current = Cursors.Default;
                    }
                    catch (Exception ex)
                    {
                        //元に戻す
                        Cursor.Current = Cursors.Default;

                        // エラーロギング
                        new CommonException(ex);

                        // メッセージボックスの処理、追加失敗の場合のウィンドウ(OK)
                        basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_TOUROKU, CommonTeisu.LABEL_TOUROKU_MISS, CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                        basemessagebox.ShowDialog();

                        return;
                    }
                }

                //待機状態
                Cursor.Current = Cursors.WaitCursor;

                // 検索実行
                DataTable dtTanaorosi = tanaorosiPrint_B.getTanaorosi(lstSearchItemProc);

                //元に戻す
                Cursor.Current = Cursors.Default;

                // 対象データがある場合
                if (dtTanaorosi != null && dtTanaorosi.Rows.Count > 0)
                {
                    string strFilter = "";

                    // 中分類コードがある場合
                    if (!lstSearchItem[3].Equals(""))
                    {
                        strFilter += "中分類コード = '" + lstSearchItem[3] + "'";
                    }

                    // メーカーコードがある場合
                    if (!lstSearchItem[4].Equals(""))
                    {
                        if (!strFilter.Equals(""))
                        {
                            strFilter += " AND ";
                        }
                        strFilter += "メーカーコード = '" + lstSearchItem[4] + "'";
                    }

                    // 棚番がある場合
                    if (!lstSearchItem[5].Equals("") && !lstSearchItem[6].Equals(""))
                    {
                        if (!strFilter.Equals(""))
                        {
                            strFilter += " AND ";
                        }
                        strFilter += "棚番 >= '" + lstSearchItem[5] + "' AND 棚番 <= '" + lstSearchItem[6] + "'";
                    }

                    // 対象データから更に絞り込み(中分類コード、メーカーコード、棚番)
                    if (!strFilter.Equals(""))
                    {
                        DataView dvTanaorosi = new DataView(dtTanaorosi);
                        dvTanaorosi.RowFilter = strFilter;
                        dtTanaorosi           = dvTanaorosi.ToTable();

                        // 対象データがない場合
                        if (dtTanaorosi == null || dtTanaorosi.Rows.Count == 0)
                        {
                            // メッセージボックスの処理、対象データがない場合のウィンドウ(OK)
                            basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "対象のデータはありません。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_INFOMATION);
                            basemessagebox.ShowDialog();

                            return;
                        }
                    }

                    // SaveFileDialogクラスのインスタンスを作成
                    SaveFileDialog sfd = new SaveFileDialog();
                    // ファイル名の指定
                    sfd.FileName = "棚卸プレシート_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xlsx";
                    // デフォルトパス取得(デスクトップ)
                    string Init_dir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                    //はじめに表示されるフォルダを指定する
                    sfd.InitialDirectory = Init_dir;
                    // ファイルフィルタの設定
                    sfd.Filter = "すべてのファイル(*.*)|*.*";

                    //ダイアログを表示する
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        //待機状態
                        Cursor.Current = Cursors.WaitCursor;

                        CreatePdf cpdf = new CreatePdf();

                        // 出力するヘッダを設定

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

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

                        string[] header =
                        {
                            "営業所名",
                            "大分類名",
                            "中分類名",
                            "棚番",
                            "メーカー名",
                            "品名型番",
                            "指定日在庫",
                            "棚卸数量",
                        };

                        string outFile = sfd.FileName;

                        // Excel作成処理
                        cpdf.DtToXls(dtChkList, "業種マスタリスト", outFile, 3, 1, header);

                        //元に戻す
                        Cursor.Current = Cursors.Default;

                        // メッセージボックスの処理、Excel作成完了の場合のウィンドウ(OK)
                        basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excelファイルを作成しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_INFOMATION);
                        basemessagebox.ShowDialog();
                    }
                }
            }
            catch (Exception ex)
            {
                //データロギング
                new CommonException(ex);
                //例外発生メッセージ(OK)
                BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_ERROR, CommonTeisu.LABEL_ERROR_MESSAGE, CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                basemessagebox.ShowDialog();
                return;
            }
        }
コード例 #32
0
ファイル: Form8_2.cs プロジェクト: kawabata-neolis/KATO
        private string printSakuseiList()
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strFilePath = "./Template/H0210_MitsumoriSakuseiList.xlsx";
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");

            try
            {
                this.Cursor = Cursors.WaitCursor;

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

                IXLWorksheet templatesheet1 = workbook.Worksheet(1); // テンプレートシート
                //IXLWorksheet templatesheet2 = workbook.Worksheet(2);   // テンプレートシート(明細行のみ)
                IXLWorksheet currentsheet = null;                    // 処理中シート

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

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

                string strKikan = "";
                if (!string.IsNullOrWhiteSpace(txtFrom.Text))
                {
                    strKikan += txtFrom.Text;
                    if (!string.IsNullOrWhiteSpace(txtTo.Text))
                    {
                        strKikan += "~";
                    }
                }
                if (!string.IsNullOrWhiteSpace(txtTo.Text))
                {
                    strKikan += txtTo.Text;
                }
                currentsheet.Cell(8, "B").Value = strKikan;

                for (int i = 0; i < gridMitsu.RowCount; i++)
                {
                    if (xlsRowCnt == 55)
                    {
                        pageCnt++;
                        xlsRowCnt = 11;

                        // テンプレートシート(明細行のみ)からコピー
                        templatesheet1.CopyTo("Page" + pageCnt.ToString());
                        currentsheet = workbook.Worksheet(workbook.Worksheets.Count);
                    }
                    currentsheet.Cell(xlsRowCnt, "A").Value = getCellValue(gridMitsu[7, i], false);
                    currentsheet.Cell(xlsRowCnt, "C").Value = getCellValue(gridMitsu[3, i], false);
                    currentsheet.Cell(xlsRowCnt, "D").Value = getCellValue(gridMitsu[2, i], false);
                    currentsheet.Cell(xlsRowCnt, "E").Value = getCellValue(gridMitsu[4, i], false);
                    currentsheet.Cell(xlsRowCnt, "F").Value = getCellValue(gridMitsu[5, i], false);

                    xlsRowCnt++;
                }

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

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

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

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

                // PDF化の処理
                CreatePdf pdf = new CreatePdf();
                return(pdf.createPdf(strOutXlsFile, strDateTime, 0));
                //return pdf.createPdf(strOutXlsFile, "_" + txtMNum.Text, 0);
            }
            catch
            {
                throw;
            }
            finally
            {
                //// Workフォルダの全ファイルを取得
                //string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                //// Workフォルダ内のファイル削除
                //foreach (string filepath in files)
                //{
                //    System.IO.File.Delete(filepath);
                //}
                this.Cursor = Cursors.Default;
            }
        }
コード例 #33
0
        // 印刷用ファイル作成
        public void dbToXls(DataTable dtShiharaiCheakList, List <string> lstItem, string fn)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string std         = DateTime.Now.ToString("_yyyy_MM_dd_HH_mm");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            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 = dtShiharaiCheakList.AsEnumerable()
                                 .Select(dat => new
                {
                    siiresakiCd   = dat["仕入先コード"],
                    siiresakiName = dat["仕入先名"],
                    shiharaiYmd   = dat["伝票年月日"],
                    denpyoNo      = dat["伝票番号"],
                    bunruiName    = dat["取引区分名"],
                    koza          = dat["口座"],
                    kinyuKikan    = dat["金融機関名"],
                    kingaku       = (decimal)dat["支払額"],
                    kijitsu       = dat["手形期日"],
                    bikou         = dat["備考"]
                                    //gaku = (decimal)dat["額"]
                }).ToList();

                // linqで税抜合計金額、消費税、税込合計金額の合計算出
                decimal decKingaku = outDataAll.Select(gokei => gokei.kingaku).Sum();

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

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

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

                // ClosedXMLで1行ずつExcelに出力
                foreach (DataRow drSiireCheak 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", "J1").Merge();

                        // 入力日、伝票年月日出力(A2のセル)
                        IXLCell unitCell = headersheet.Cell("A2");
                        unitCell.Value = "入力日:" +
                                         string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[0])) + " ~ " +
                                         string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[1])) + "  伝票年月日:" +
                                         string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[2])) + " ~ " +
                                         string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[3])) +
                                         "  仕入先コード:" + lstItem[5] + " ~ " + lstItem[6];
                        unitCell.Style.Font.FontSize = 10;

                        // ヘッダー出力(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.Range("A3", "J3").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

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

                        // セルの背景色
                        headersheet.Range("A3", "J3").Style.Fill.BackgroundColor = XLColor.LightGray;

                        // 列幅の指定
                        //headersheet.Column(1).Width = 5;
                        //headersheet.Column(2).Width = 38;
                        //headersheet.Column(3).Width = 11;
                        //headersheet.Column(4).Width = 8;
                        //headersheet.Column(5).Width = 10;
                        //headersheet.Column(6).Width = 5;
                        //headersheet.Column(7).Width = 38;
                        //headersheet.Column(8).Width = 12;
                        //headersheet.Column(9).Width = 11;
                        //headersheet.Column(10).Width = 38;
                        headersheet.Column(1).Width  = 5;
                        headersheet.Column(2).Width  = 30;
                        headersheet.Column(3).Width  = 11;
                        headersheet.Column(4).Width  = 8;
                        headersheet.Column(5).Width  = 10;
                        headersheet.Column(6).Width  = 4;
                        headersheet.Column(7).Width  = 13;
                        headersheet.Column(8).Width  = 12;
                        headersheet.Column(9).Width  = 11;
                        headersheet.Column(10).Width = 27;

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

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

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

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

                        // 支払日、手形期日セルの場合
                        if (colCnt == 3 || colCnt == 9)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.DateFormat.SetFormat("yyyy/MM/dd");
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                        }

                        // 伝票番号セルの処理
                        if (colCnt == 4)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }

                        // 支払額セルの処理
                        if (colCnt == 8)
                        {
                            // 3桁毎に","を挿入する
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.NumberFormat.SetFormat("#,##0");
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                        }

                        // 備考セルの場合
                        if (colCnt == 10)
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                            str = "'" + str;
                        }

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

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

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

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

                    rowCnt++;
                    xlsRowCnt++;
                }

                // 最終行を出力した後、合計行を出力
                if (dtChkList.Rows.Count > 0)
                {
                    // セル結合
                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 7).Merge();
                    currentsheet.Cell(xlsRowCnt, 1).Value = "◆◆◆ 合 計 ◆◆◆";
                    currentsheet.Cell(xlsRowCnt, 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

                    // 入金額
                    currentsheet.Cell(xlsRowCnt, 8).Value = string.Format("{0:#,0}", decKingaku);
                    currentsheet.Cell(xlsRowCnt, 8).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;

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

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

                // workbookを保存
                //string strOutXlsFile = strWorkPath + "支払チェックリスト" + std + ".xlsx";
                string strOutXlsFile = fn;
                workbook.SaveAs(strOutXlsFile);

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

                //// PDF化の処理
                //return pdf.createPdf(strOutXlsFile, strDateTime, 1);
            }
            catch
            {
                throw;
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #34
0
        ///<summary>
        ///     F10:Excel出力
        ///</summary>
        private void excelGyoshu()
        {
            //SQL実行時に取り出したデータを入れる用
            DataTable dtSetCd_B = new DataTable();

            //ビジネス層のインスタンス生成
            M1060_Gyoshu_B daibunB = new M1060_Gyoshu_B();

            try
            {
                dtSetCd_B = daibunB.getPrintData();

                BaseMessageBox basemessagebox;
                //取得したデータがない場合
                if (dtSetCd_B == null || dtSetCd_B.Rows.Count == 0)
                {
                    //例外発生メッセージ(OK)
                    basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_ERROR, "対象のデータはありません", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                    basemessagebox.ShowDialog();
                    return;
                }

                // SaveFileDialogクラスのインスタンスを作成
                SaveFileDialog sfd = new SaveFileDialog();
                // ファイル名の指定
                sfd.FileName = "業種マスタ_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xlsx";
                // デフォルトパス取得(デスクトップ)
                string Init_dir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                //はじめに表示されるフォルダを指定する
                sfd.InitialDirectory = Init_dir;
                // ファイルフィルタの設定
                sfd.Filter = "すべてのファイル(*.*)|*.*";

                //ダイアログを表示する
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    CreatePdf cpdf = new CreatePdf();

                    // 出力するヘッダを設定
                    //Linqで必要なデータをselect
                    var outDataAll = dtSetCd_B.AsEnumerable()
                                     .Select(dat => new
                    {
                        gyoshuCd   = (String)dat["業種コード"],
                        gyoshuName = dat["業種名"],
                    }).ToList();

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

                    string[] header =
                    {
                        "コード",
                        "業種名",
                    };

                    string outFile = sfd.FileName;

                    // Excel作成処理
                    cpdf.DtToXls(dtChkList, "業種マスタリスト", outFile, 3, 1, header);

                    // メッセージボックスの処理、Excel作成完了の場合のウィンドウ(OK)
                    basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excelファイルを作成しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_INFOMATION);
                    basemessagebox.ShowDialog();
                }
            }
            catch (Exception ex)
            {
                //データロギング
                new CommonException(ex);
                //例外発生メッセージ(OK)
                BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_ERROR, CommonTeisu.LABEL_ERROR_MESSAGE, CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR);
                basemessagebox.ShowDialog();
                return;
            }
        }
コード例 #35
0
        /// -----------------------------------------------------------------------------
        /// <summary>
        ///     DataTableをもとにxlsxファイルを作成しPDF化</summary>
        /// <param name="dtUriageCheckList">
        ///     売上チェックリストのデータテーブル</param>
        /// -----------------------------------------------------------------------------
        public string dbToPdf(DataTable dtUriageCheckList, List <string> lstItem)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strNow      = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            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 = dtUriageCheckList.AsEnumerable()
                                 .Select(dat => new
                {
                    groupCd              = dat["グループコード"],
                    groupName            = dat["グループ名"],
                    tantoCd              = dat["担当者コード"],
                    tantoName            = dat["担当者名"],
                    UriageCheckCode      = dat["得意先コード"],
                    UriageCheckName      = dat["得意先名"],
                    denpyoYMD            = dat["伝票年月日"],
                    denpyoNo             = dat["伝票番号"],
                    torihikiKbnName      = dat["取引区分名"],
                    sinamei              = dat["品名"],
                    suuryo               = dat["数量"],
                    tanka                = (decimal)dat["単価"],
                    uriageKingaku        = (decimal)dat["金額"],
                    bikou                = dat["備考"],
                    zeinukiGoukeiKingaku = (decimal)dat["税抜合計金額"],
                    shouhizei            = (decimal)dat["消費税"],
                    zeikomiGoukeiKingaku = (decimal)dat["税込合計金額"]
                }).ToList();

                // linqで総合計、総税込み、総税込み計を算出する。
                decimal[] decKingaku = new decimal[13];
                decKingaku[0] = outDataAll.Select(gokei => gokei.zeinukiGoukeiKingaku).Sum();
                decKingaku[1] = outDataAll.Select(gokei => gokei.shouhizei).Sum();
                decKingaku[2] = outDataAll.Select(gokei => gokei.zeikomiGoukeiKingaku).Sum();

                //グループ合計
                var groupGoukei = from tbl in dtUriageCheckList.AsEnumerable()
                                  group tbl by tbl.Field <string>("グループコード") into g
                                  select new
                {
                    section = g.Key,
                    count   = g.Count(),
                    zeinukiGoukeiKingaku = g.Sum(p => p.Field <decimal>("税抜合計金額")),
                    shouhizei            = g.Sum(p => p.Field <decimal>("消費税")),
                    zeikomiGoukeiKingaku = g.Sum(p => p.Field <decimal>("税込合計金額")),
                };

                // グループ計の税抜合計金額、消費税、税込み合計金額の算出
                decimal[,] decKingakuGroup = new decimal[groupGoukei.Count(), 3];
                for (int cnt = 0; cnt < groupGoukei.Count(); cnt++)
                {
                    decKingakuGroup[cnt, 0] = groupGoukei.ElementAt(cnt).zeinukiGoukeiKingaku;
                    decKingakuGroup[cnt, 1] = groupGoukei.ElementAt(cnt).shouhizei;
                    decKingakuGroup[cnt, 2] = groupGoukei.ElementAt(cnt).zeikomiGoukeiKingaku;
                }


                // 担当者計
                var tantouGoukei = from tbl in dtUriageCheckList.AsEnumerable()
                                   group tbl by tbl.Field <string>("担当者コード") into g
                                   select new
                {
                    section = g.Key,
                    count   = g.Count(),
                    zeinukiGoukeiKingaku = g.Sum(p => p.Field <decimal>("税抜合計金額")),
                    shouhizei            = g.Sum(p => p.Field <decimal>("消費税")),
                    zeikomiGoukeiKingaku = g.Sum(p => p.Field <decimal>("税込合計金額")),
                };

                // 担当者計の税抜合計金額、消費税、税込み合計金額の算出
                decimal[,] decKingakuTanto = new decimal[tantouGoukei.Count(), 3];
                for (int cnt = 0; cnt < tantouGoukei.Count(); cnt++)
                {
                    decKingakuTanto[cnt, 0] = tantouGoukei.ElementAt(cnt).zeinukiGoukeiKingaku;
                    decKingakuTanto[cnt, 1] = tantouGoukei.ElementAt(cnt).shouhizei;
                    decKingakuTanto[cnt, 2] = tantouGoukei.ElementAt(cnt).zeikomiGoukeiKingaku;
                }

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

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

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


                int    tantouCnt    = 0;
                int    tantouRowCnt = 0;
                int    groupCnt     = 0;
                int    groupRowCnt  = 0;
                string strDenpyoNo  = "";

                // ClosedXMLで1行ずつExcelに出力
                foreach (DataRow drUriageCheckList 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のセル)
                        IXLCell unitCell = headersheet.Cell("A2");
                        unitCell.Value = "入力日:" +
                                         string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[0])) + " ~ " +
                                         string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[1])) + "  伝票年月日:" +
                                         string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[2])) + " ~ " +
                                         string.Format("{0:yyyy年MM月dd日}", DateTime.Parse(lstItem[3])) +
                                         " 得意先コード:" + lstItem[5] + " ~ " + lstItem[6];
                        unitCell.Style.Font.FontSize = 10;

                        // ヘッダー出力(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.Range("A3", "M3").Style.Fill.BackgroundColor = XLColor.LightGray;

                        // 列幅の指定
                        headersheet.Column(1).Width  = 5;
                        headersheet.Column(2).Width  = 18;
                        headersheet.Column(3).Width  = 9;
                        headersheet.Column(4).Width  = 8;
                        headersheet.Column(5).Width  = 7;
                        headersheet.Column(6).Width  = 30;
                        headersheet.Column(7).Width  = 6;
                        headersheet.Column(8).Width  = 12;
                        headersheet.Column(9).Width  = 12;
                        headersheet.Column(10).Width = 24;
                        headersheet.Column(11).Width = 10;
                        headersheet.Column(12).Width = 8;
                        headersheet.Column(13).Width = 12;

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

                        // 印刷体裁(B4横、印刷範囲)
                        headersheet.PageSetup.PaperSize       = XLPaperSize.B4Paper;
                        headersheet.PageSetup.PageOrientation = XLPageOrientation.Landscape;

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

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

                    // グループ名出力
                    if (groupRowCnt == 0)
                    {
                        currentsheet.Cell(xlsRowCnt, 1).Value = drUriageCheckList[1];
                        currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 13).Merge();

                        // 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 == 39)
                    {
                        pageCnt++;
                        if (pageCnt <= maxPage)
                        {
                            xlsRowCnt = 4;

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

                    // 担当者名出力
                    if (tantouRowCnt == 0)
                    {
                        currentsheet.Cell(xlsRowCnt, 1).Value = drUriageCheckList[3];
                        currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 13).Merge();

                        // 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 == 39)
                    {
                        pageCnt++;
                        if (pageCnt <= maxPage)
                        {
                            xlsRowCnt = 4;

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

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

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

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

                        // 備考の場合
                        if (colCnt == 14)
                        {
                            currentsheet.Cell(xlsRowCnt, 10).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
                        }

                        // 伝票番号の場合
                        if (colCnt == 8)
                        {
                            // 最初の行の場合 or 前行の伝票番号が現在の伝票番号と同じでない場合
                            if (!drUriageCheckList[7].ToString().Equals(strDenpyoNo))
                            {
                                // 得意先コード、得意先名、年月日、伝票番号、取引区分名
                                for (int cnt = 0; cnt < 5; cnt++)
                                {
                                    currentsheet.Cell(xlsRowCnt, cnt + 1).Value = drUriageCheckList[cnt + 4].ToString();
                                }

                                // 税抜合計金額、消費税、税込合計金額
                                for (int cnt = 0; cnt < 3; cnt++)
                                {
                                    // 3桁毎に","を挿入する
                                    IXLCell kingakuCell = currentsheet.Cell(xlsRowCnt, colCnt + cnt + 3);
                                    kingakuCell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
                                    kingakuCell.Value = string.Format("{0:#,0}", decimal.Parse(drUriageCheckList[colCnt + cnt + 6].ToString()));
                                }

                                strDenpyoNo = drUriageCheckList[7].ToString();
                            }
                        }
                        // 取引区分名の場合、伝票番号の処理で行っているため何もしない
                        else if (colCnt == 9)
                        {
                        }
                        else
                        {
                            currentsheet.Cell(xlsRowCnt, colCnt - 4).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 == 38)
                    {
                        pageCnt++;
                        if (pageCnt <= maxPage)
                        {
                            xlsRowCnt = 3;

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

                    // 担当者計を出力
                    tantouRowCnt++;
                    if (tantouGoukei.ElementAt(tantouCnt).count == tantouRowCnt)
                    {
                        xlsRowCnt++;
                        string strTanto = "                                        " +
                                          "◆ 担当者計 ◆" + string.Format("{0,14:#,0}", decKingakuTanto[tantouCnt, 0]) +
                                          "        ◆消費税◆" + string.Format("{0,12:#,0}", decKingakuTanto[tantouCnt, 1]) +
                                          "        ◆税込み計◆" + string.Format("{0,14:#,0}", decKingakuTanto[tantouCnt, 2]);

                        // セル結合
                        currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 13).Merge();
                        currentsheet.Cell(xlsRowCnt, 1).Value = strTanto;

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

                        tantouCnt++;
                        tantouRowCnt = 0;
                    }

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

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

                    // グループ計を出力
                    groupRowCnt++;
                    if (groupGoukei.ElementAt(groupCnt).count == groupRowCnt)
                    {
                        xlsRowCnt++;
                        string strGroup = "                                        " +
                                          "◆グループ計◆" + string.Format("{0,14:#,0}", decKingakuGroup[groupCnt, 0]) +
                                          "        ◆消費税◆" + string.Format("{0,12:#,0}", decKingakuGroup[groupCnt, 1]) +
                                          "        ◆税込み計◆" + string.Format("{0,14:#,0}", decKingakuGroup[groupCnt, 2]);

                        // セル結合
                        currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 13).Merge();
                        currentsheet.Cell(xlsRowCnt, 1).Value = strGroup;

                        // 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 == 38)
                    {
                        pageCnt++;
                        if (pageCnt <= maxPage)
                        {
                            xlsRowCnt = 3;

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

                    rowCnt++;
                    xlsRowCnt++;
                }

                // 最終行を出力した後、合計行を出力
                if (dtChkList.Rows.Count > 0)
                {
                    string strKingaku = "                                        " +
                                        "◆  総合計  ◆" + string.Format("{0,14:#,0}", decKingaku[0]) +
                                        "        ◆消費税◆" + string.Format("{0,12:#,0}", decKingaku[1]) +
                                        "        ◆税込み計◆" + string.Format("{0,14:#,0}", decKingaku[2]);

                    // セル結合
                    currentsheet.Range(xlsRowCnt, 1, xlsRowCnt, 13).Merge();
                    currentsheet.Cell(xlsRowCnt, 1).Value = strKingaku;

                    // 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();

                // PDF化の処理
                return(pdf.createPdf(strOutXlsFile, strDateTime, 1));
            }
            catch
            {
                throw;
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }
コード例 #36
0
        public string printReport(DataTable dt, string stJuchusha, string stTokui, string stFrom,
                                  string stTo, string stKata, string stChuban, int sKind)
        {
            string strWorkPath = System.Configuration.ConfigurationManager.AppSettings["workpath"];
            string strFilePath = "./Template/D0360_JuchuzanKakunin.xlsx";
            string strDateTime = DateTime.Now.ToString("yyyyMMddHHmmss");

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

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

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

                // 4行目記載文字列作成
                #region
                string sPrm = "受注者:";
                if (sKind == 1)
                {
                    sPrm = "発注者:";
                }

                if (!string.IsNullOrWhiteSpace(stJuchusha))
                {
                    sPrm += stJuchusha;
                }
                if (sKind == 1)
                {
                    sPrm += " 仕入先:";
                }
                else
                {
                    sPrm += " 得意先:";
                }

                if (!string.IsNullOrWhiteSpace(stTokui))
                {
                    sPrm += stTokui;
                }
                sPrm += " 納期範囲:";

                if (!string.IsNullOrWhiteSpace(stFrom))
                {
                    sPrm += stFrom;
                }
                sPrm += "~";

                if (!string.IsNullOrWhiteSpace(stTo))
                {
                    sPrm += stTo;
                }
                sPrm += " 品名・型番:";

                if (!string.IsNullOrWhiteSpace(stKata))
                {
                    sPrm += stKata;
                }
                sPrm += " 注番:";

                if (!string.IsNullOrWhiteSpace(stKata))
                {
                    sPrm += stChuban;
                }
                #endregion

                currentsheet.Cell(4, "A").Value = sPrm;

                if (sKind == 1)
                {
                    currentsheet.Cell(6, "A").Value = "発注日";
                    currentsheet.Cell(6, "K").Value = "仕入済";
                }

                // ClosedXMLで1行ずつExcelに出力
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (xlsRowCnt >= 67)
                    {
                        pageCnt++;
                        xlsRowCnt = 7;

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

                        if (sKind == 1)
                        {
                            currentsheet.Cell(6, "A").Value = "発注日";
                            currentsheet.Cell(6, "K").Value = "仕入済";
                        }
                    }

                    if (sKind != 1)
                    {
                        currentsheet.Cell(xlsRowCnt, "A").Value     = "'" + dt.Rows[i]["受注日"].ToString().Substring(2, 8);
                        currentsheet.Cell(xlsRowCnt, "B").Value     = "'" + dt.Rows[i]["納期"].ToString().Substring(2, 8);
                        currentsheet.Cell(xlsRowCnt, "C").Value     = "'" + dt.Rows[i]["注番"];
                        currentsheet.Cell(xlsRowCnt, "D").Value     = dt.Rows[i]["メーカー"];
                        currentsheet.Cell(xlsRowCnt, "E").Value     = "'" + dt.Rows[i]["品名"];
                        currentsheet.Cell(xlsRowCnt, "F").Value     = dt.Rows[i]["受注数"];
                        currentsheet.Cell(xlsRowCnt, "G").Value     = dt.Rows[i]["売上単価"];
                        currentsheet.Cell(xlsRowCnt, "H").Value     = dt.Rows[i]["売上金額"];
                        currentsheet.Cell(xlsRowCnt, "I").Value     = dt.Rows[i]["仕入単価"];
                        currentsheet.Cell(xlsRowCnt, "J").Value     = dt.Rows[i]["仕入金額"];
                        currentsheet.Cell(xlsRowCnt, "K").Value     = dt.Rows[i]["売上済"];
                        currentsheet.Cell(xlsRowCnt, "L").Value     = dt.Rows[i]["状態"];
                        currentsheet.Cell(xlsRowCnt, "M").Value     = dt.Rows[i]["受注番号"];
                        currentsheet.Cell(xlsRowCnt, "N").Value     = dt.Rows[i]["得意先名"];
                        currentsheet.Cell(xlsRowCnt + 1, "N").Value = dt.Rows[i]["仕入先名"];
                        currentsheet.Cell(xlsRowCnt, "O").Value     = dt.Rows[i]["受注者"];
                    }
                    else
                    {
                        currentsheet.Cell(xlsRowCnt, "A").Value     = "'" + dt.Rows[i]["発注日"].ToString().Substring(2, 8);
                        currentsheet.Cell(xlsRowCnt, "B").Value     = "'" + dt.Rows[i]["納期"].ToString().Substring(2, 8);
                        currentsheet.Cell(xlsRowCnt, "C").Value     = "'" + dt.Rows[i]["注番"];
                        currentsheet.Cell(xlsRowCnt, "D").Value     = dt.Rows[i]["メーカー"];
                        currentsheet.Cell(xlsRowCnt, "E").Value     = "'" + dt.Rows[i]["品名"];
                        currentsheet.Cell(xlsRowCnt, "F").Value     = dt.Rows[i]["受注数"];
                        currentsheet.Cell(xlsRowCnt, "G").Value     = dt.Rows[i]["売上単価"];
                        currentsheet.Cell(xlsRowCnt, "H").Value     = dt.Rows[i]["売上金額"];
                        currentsheet.Cell(xlsRowCnt, "I").Value     = dt.Rows[i]["仕入単価"];
                        currentsheet.Cell(xlsRowCnt, "J").Value     = dt.Rows[i]["仕入金額"];
                        currentsheet.Cell(xlsRowCnt, "K").Value     = dt.Rows[i]["仕入済"];
                        currentsheet.Cell(xlsRowCnt, "L").Value     = dt.Rows[i]["状態"];
                        currentsheet.Cell(xlsRowCnt, "M").Value     = dt.Rows[i]["受注番号"];
                        currentsheet.Cell(xlsRowCnt, "N").Value     = dt.Rows[i]["得意先名"];
                        currentsheet.Cell(xlsRowCnt + 1, "N").Value = dt.Rows[i]["仕入先名"];
                        currentsheet.Cell(xlsRowCnt, "O").Value     = dt.Rows[i]["発注者"];
                    }

                    xlsRowCnt = xlsRowCnt + 2;
                }

                for (int i = xlsRowCnt; i < 67; i++)
                {
                    currentsheet.Row(xlsRowCnt).Clear();
                    currentsheet.Row(xlsRowCnt).Delete();
                }

                currentsheet.Row(xlsRowCnt).InsertRowsAbove(1);

                //currentsheet.Cell(xlsRowCnt, "A").Style.Border.SetTopBorder(XLBorderStyleValues.Thin);
                //currentsheet.Cell(xlsRowCnt, "A").Style.Border.SetLeftBorder(XLBorderStyleValues.Thin);
                //currentsheet.Cell(xlsRowCnt, "A").Style.Border.SetRightBorder(XLBorderStyleValues.Thin);
                //currentsheet.Cell(xlsRowCnt, "A").Style.Border.SetBottomBorder(XLBorderStyleValues.Thin);

                currentsheet.Cell(xlsRowCnt, "H").Value = (dt.Compute("Sum(売上金額)", null)).ToString();
                currentsheet.Cell(xlsRowCnt, "J").Value = (dt.Compute("Sum(仕入金額)", null)).ToString();

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

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

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

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

                // ロゴ貼り付け処理
                // PDF化の処理
                CreatePdf pdf = new CreatePdf();
                return(pdf.createPdf(strOutXlsFile, strDateTime, 0));
            }
            catch
            {
                throw;
            }
            finally
            {
                // Workフォルダの全ファイルを取得
                string[] files = System.IO.Directory.GetFiles(strWorkPath, "*", System.IO.SearchOption.AllDirectories);
                // Workフォルダ内のファイル削除
                foreach (string filepath in files)
                {
                    //File.Delete(filepath);
                }
            }
        }