From 1a1c8e71fcd14858f595029f089b2d4a00202b32 Mon Sep 17 00:00:00 2001
From: ogi <Administrator@S-OGI-PC>
Date: Fri, 05 Dec 2025 09:24:16 +0900
Subject: [PATCH] プロジェクトファイルを追加。

---
 HotelPms.Share.Windows/Report/GridExcel.cs |  260 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 260 insertions(+), 0 deletions(-)

diff --git a/HotelPms.Share.Windows/Report/GridExcel.cs b/HotelPms.Share.Windows/Report/GridExcel.cs
new file mode 100644
index 0000000..099ceb5
--- /dev/null
+++ b/HotelPms.Share.Windows/Report/GridExcel.cs
@@ -0,0 +1,260 @@
+using NPOI.HSSF.UserModel;
+using NPOI.SS.UserModel;
+using NPOI.XSSF.UserModel;
+using HotelPms.Share.Util;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Diagnostics;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using HotelPms.Share.Windows.Util;
+using HorizontalAlignment = NPOI.SS.UserModel.HorizontalAlignment;
+using BorderStyle = NPOI.SS.UserModel.BorderStyle;
+
+namespace HotelPms.Share.Windows.Report
+{
+    public class GridExcel : ReportBase, IDisposable, IReport
+    {
+        #region  ★★★★★ Declartions ★★★★★
+
+        private bool m_Disposed = false;
+        private string m_File = string.Empty;
+
+        #endregion
+
+        #region  ★★★★★ Property ★★★★★
+
+        private bool m_XlsxEnabled = true;
+
+        public bool XlsxEnabled
+        {
+            get { return m_XlsxEnabled; }
+            set { m_XlsxEnabled = value; }
+        }
+
+        #endregion
+
+        #region  ★★★★★ Class Event ★★★★★
+
+        public GridExcel(DataTable data, GridStyle style, bool xlsxEnabled, string file)
+        {
+            m_Data = data;
+            m_Style = style;
+            m_XlsxEnabled = xlsxEnabled;
+            m_File = file;
+        }
+
+        ~GridExcel()
+        {
+            Dispose(false);
+        }
+
+        protected virtual void Dispose(bool disposing)
+        {
+            if (!m_Disposed)   //一回だけ
+            {
+                if (disposing)
+                {
+                    //Managed Resources
+                }
+
+                //Unmanaged resources
+                m_Disposed = true;
+            }
+        }
+
+        public void Dispose()
+        {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        #endregion
+
+        #region  ★★★★★ Control Event ★★★★★
+        #endregion
+
+        #region  ★★★★★ Private Function ★★★★★
+        #endregion
+
+        #region  ★★★★★ Public  Function ★★★★★
+
+        public void Output()
+        {
+            string path = m_File + (m_XlsxEnabled ? ".xlsx" : ".xls");
+            Output(path);
+            //Process.Start(path);
+            CConvert.StartFile(path);
+        }
+
+        public void Output(string file)
+        {
+            using (FileStream stream = new FileStream(file, FileMode.Create, FileAccess.Write))
+            {
+                IWorkbook wb = null;
+                if (m_XlsxEnabled) { wb = new XSSFWorkbook(); } else { wb = new HSSFWorkbook(); }
+                ISheet sheet = wb.CreateSheet("Sheet1");
+                ICreationHelper cH = wb.GetCreationHelper();
+
+                 // Create a new font and alter it.
+                IFont font = wb.CreateFont();
+                font.FontHeightInPoints = (short)m_Style.Font.SizeInPoints;
+                font.FontName = m_Style.Font.Name;
+
+                //center
+                ICellStyle style = wb.CreateCellStyle();
+                style.SetFont(font);
+                style.BorderBottom = BorderStyle.Thin;
+                style.BottomBorderColor = IndexedColors.Black.Index;
+                style.BorderLeft = BorderStyle.Thin;
+                style.LeftBorderColor = IndexedColors.Black.Index;
+                style.BorderRight = BorderStyle.Thin;
+                style.RightBorderColor = IndexedColors.Black.Index;
+                style.BorderTop = BorderStyle.Thin;
+                style.TopBorderColor = IndexedColors.Black.Index;
+                style.Alignment = HorizontalAlignment.Center;
+                style.VerticalAlignment = VerticalAlignment.Center;
+
+                //left
+                ICellStyle style1 = wb.CreateCellStyle();
+                style1.SetFont(font);
+                style1.BorderBottom = BorderStyle.Thin;
+                style1.BottomBorderColor = IndexedColors.Black.Index;
+                style1.BorderLeft = BorderStyle.Thin;
+                style1.LeftBorderColor = IndexedColors.Black.Index;
+                style1.BorderRight = BorderStyle.Thin;
+                style1.RightBorderColor = IndexedColors.Black.Index;
+                style1.BorderTop = BorderStyle.Thin;
+                style1.TopBorderColor = IndexedColors.Black.Index;
+                style1.Alignment = HorizontalAlignment.Left;
+                style1.VerticalAlignment = VerticalAlignment.Center;
+
+                //right
+                ICellStyle style3 = wb.CreateCellStyle();
+                style3.SetFont(font);
+                style3.Alignment = HorizontalAlignment.Right;
+                style3.VerticalAlignment = VerticalAlignment.Bottom;
+
+                IFont font18 = wb.CreateFont();
+                font18.FontHeightInPoints = (short)18;
+                font18.FontName = m_Style.Font.Name;
+
+                ICellStyle style2 = wb.CreateCellStyle();
+                style2.SetFont(font18);
+                style2.Alignment = HorizontalAlignment.Left;
+                style2.VerticalAlignment = VerticalAlignment.Center;
+
+                IRow row = sheet.CreateRow(0);
+                ICell cell = row.CreateCell(0);
+                cell.SetCellValue("データ一覧");
+                cell.CellStyle = style2;
+
+                cell = row.CreateCell(m_Style.ColumnStyle.Count - 1);
+                cell.SetCellValue(DateTime.Now.ToString("yyyy年MM月dd日(ddd) HH:mm:ss"));
+                cell.CellStyle = style3;
+
+                //タイトル
+                row = sheet.CreateRow(1);
+                //row.HeightInPoints = 16;
+                int col = 0;
+                foreach (ColumnStyle cs in m_Style.ColumnStyle)
+                {
+                    cell = row.CreateCell(col);
+                    cell.CellStyle = style;
+                    if (cs.MaxCharLen < GeneralSub.GetStrLenB(cs.Text)) { cs.MaxCharLen = GeneralSub.GetStrLenB(cs.Text); }
+                    cell.SetCellValue(cH.CreateRichTextString(cs.Text));
+                    col++;
+                }
+
+                //データ
+                for (int i = 0; i < m_Data.Rows.Count; i++)
+                {
+                    row = sheet.CreateRow(i + 2);
+                    //row.HeightInPoints = 16;
+                    col = 0;
+                    foreach (ColumnStyle cs in m_Style.ColumnStyle)
+                    {
+                        cell = row.CreateCell(col);
+                        if (cs.DefaultCellStyle != null)
+                        {
+                            if (cs.DefaultCellStyle.Alignment == StringAlignment.Center)
+                            {
+                                cell.CellStyle = style;
+                            }
+                            else
+                            {
+                                cell.CellStyle = style1;
+                            }
+                        }
+                        string text = m_Data.Rows[i][cs.DataField].ToString();
+                        if (cs.MaxCharLen < GeneralSub.GetStrLenB(text)) { cs.MaxCharLen = GeneralSub.GetStrLenB(text); }
+                        cell.SetCellValue(cH.CreateRichTextString(text));
+                        col++;
+                    }
+                }
+
+                //fit
+                col = 0;
+                foreach (ColumnStyle cs in m_Style.ColumnStyle)
+                {
+                    sheet.SetColumnWidth(col, (int)((cs.MaxCharLen + 0.72) * 256));
+                    //sheet.AutoSizeColumn(col);
+                    col++;
+                }
+                wb.Write(stream, true);
+            }
+        }
+
+        /// <summary>
+        /// 横水平方向
+        /// </summary>
+        /// <param name="align"></param>
+        /// <returns></returns>
+        public HorizontalAlignment ToHorizontalAlignment(StringAlignment align)
+        {
+            HorizontalAlignment ag = HorizontalAlignment.Center;
+            switch (align)
+            {
+                case StringAlignment.Center:
+                    ag = HorizontalAlignment.Center;
+                    break;
+                case StringAlignment.Near:
+                    ag = HorizontalAlignment.Left;
+                    break;
+                case StringAlignment.Far:
+                    ag = HorizontalAlignment.Right;
+                    break;
+            }
+            return ag;
+        }
+
+        /// <summary>
+        /// 縦垂直方向
+        /// </summary>
+        /// <param name="align"></param>
+        /// <returns></returns>
+        public VerticalAlignment ToVerticalAlignment(StringAlignment align)
+        {
+            VerticalAlignment ag = VerticalAlignment.Center;
+            switch (align)
+            {
+                case StringAlignment.Center:
+                    ag = VerticalAlignment.Center;
+                    break;
+                case StringAlignment.Near:
+                    ag = VerticalAlignment.Top;
+                    break;
+                case StringAlignment.Far:
+                    ag = VerticalAlignment.Bottom;
+                    break;
+            }
+            return ag;
+        }
+
+        #endregion
+
+    }
+}

--
Gitblit v1.10.0