สร้างไฟล์ Excel ด้วย C# และ NPOI

  1. ติดตั้ง Package
  2. สร้างไฟล์ Excel เปล่า
  3. ใส่ข้อความลงฟิลด์
  4. ใส่สไตล์ให้ฟิลด์

1. ติดตั้ง Package

PM> Install-Package NPOI -Version 2.4.1

2.สร้างไฟล์ Excel เปล่า

สร้าง Workbook และ worksheet ชื่อ Sheet1 และ Sheet2 จากนั้นสั่ง save ที่ Workbook

using NPOI.HSSF.UserModel;
using System.IO;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            HSSFWorkbook workbook = new HSSFWorkbook();
            var sheet1 = workbook.CreateSheet("Sheet1");
            var sheet2 = workbook.CreateSheet("Sheet2");

            string filename = @"d:\Book.xls";
            using (var fileData = new FileStream(filename, FileMode.Create))
            {
                workbook.Write(fileData);
            }
        }
    }
}

ไฟล์ที่ได้จะนามสกุล .xls

3.ใส่ข้อความลงฟิลด์

using NPOI.HSSF.UserModel;
using System.Data;
using System.IO;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            HSSFWorkbook workbook = new HSSFWorkbook();
            var sheet1 = workbook.CreateSheet("Sheet1");
            var sheet2 = workbook.CreateSheet("Sheet2");

            var rowIndex = 0;
            var row = sheet1.CreateRow(rowIndex);
            row.CreateCell(0).SetCellValue("Username");
            row.CreateCell(1).SetCellValue("Email");
            rowIndex++;

            DataTable dt = new DataTable();
            dt.Columns.Add("Name");
            dt.Columns.Add("Email");
            DataRow row1 = dt.NewRow();
            row1["Name"] = "Jack";
            row1["Email"] = "mr.phaisarn@gmail.com";
            dt.Rows.Add(row1);
            DataRow row2 = dt.NewRow();
            row2["Name"] = "Example";
            row2["Email"] = "example@gmail.com";
            dt.Rows.Add(row2);

            foreach (DataRow dr in dt.Rows)
            {
                row = sheet1.CreateRow(rowIndex);
                row.CreateCell(0).SetCellValue(dr["Name"].ToString());
                row.CreateCell(1).SetCellValue(dr["Email"].ToString());
                rowIndex++;
            }

            string filename = @"d:\Book.xls";
            using (var fileData = new FileStream(filename, FileMode.Create))
            {
                workbook.Write(fileData);
            }
        }
    }
}

บรรทัดที่ 16-18 สร้าง row แล้วกำหนดข้อมูลให้แต่ละคอลัมน์

บรรทัดที่ 21-31 สร้าง DataTable

บรรทัดที่ 33 นำข้อมูลจาก DataTable มาใส่ลงฟิลด์

4.ใส่สไตล์ให้ฟิลด์

กำหนดตัวหนา เส้นบน เส้นล่าง

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System.Data;
using System.IO;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            HSSFWorkbook workbook = new HSSFWorkbook();
            var sheet1 = workbook.CreateSheet("Sheet1");
            var sheet2 = workbook.CreateSheet("Sheet2");

            var rowIndex = 0;
            var row = sheet1.CreateRow(rowIndex);
            row.CreateCell(0).SetCellValue("Username");
            row.CreateCell(1).SetCellValue("Email");
            rowIndex++;

            DataTable dt = new DataTable();
            dt.Columns.Add("Name");
            dt.Columns.Add("Email");
            DataRow row1 = dt.NewRow();
            row1["Name"] = "Jack";
            row1["Email"] = "mr.phaisarn@gmail.com";
            dt.Rows.Add(row1);
            DataRow row2 = dt.NewRow();
            row2["Name"] = "Example";
            row2["Email"] = "example@gmail.com";
            dt.Rows.Add(row2);

            foreach (DataRow dr in dt.Rows)
            {
                row = sheet1.CreateRow(rowIndex);
                row.CreateCell(0).SetCellValue(dr["Name"].ToString());
                row.CreateCell(1).SetCellValue(dr["Email"].ToString());
                rowIndex++;
            }

            // Create the style object
            var customStyle = workbook.CreateCellStyle();
            // Define a thin border for the top and bottom of the cell
            customStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
            customStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
            // Create a font object and make it bold
            var customFont = workbook.CreateFont();
            customFont.Boldweight = (short)FontBoldWeight.Bold;
            customStyle.SetFont(customFont);

            // Add a row for the detail row
            row = sheet1.CreateRow(rowIndex);
            // Create the first cell – and apply the style
            var cell = row.CreateCell(0);
            cell.SetCellValue("Summary:");
            cell.CellStyle = customStyle;
            // Create the second cell , which is empty
            cell = row.CreateCell(1);
            cell.CellStyle = customStyle;

            string filename = @"d:\Book.xls";
            using (var fileData = new FileStream(filename, FileMode.Create))
            {
                workbook.Write(fileData);
            }
        }
    }
}

Link