SHOWcode

顯示具有 NPOI 標籤的文章。 顯示所有文章
顯示具有 NPOI 標籤的文章。 顯示所有文章

2018年4月11日 星期三

C#.NET 匯出 NPOI參考(含客戶端)

NPOI模組 NPOI參考

//using NPOI;
//using NPOI.HSSF.UserModel; //Excel 2003檔案Model
//using NPOI.XSSFW.UserModel; //Excel 2007檔案Model
//using NPOI.SS.UserModel;



private void DataTableToExcelFile(DataTable dt)
        {
            //建立Excel 2003檔案
            IWorkbook wb = new HSSFWorkbook();
            ISheet ws;

    //建立Excel 2007檔案
            //IWorkbook wb = new XSSFWorkbook();
            //ISheet ws;

            if (dt.TableName != string.Empty)
            {
                ws = wb.CreateSheet(dt.TableName);
            }
            else
            {
                ws = wb.CreateSheet("Sheet1");
            }

            ws.CreateRow(0);//第一行為欄位名稱
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                ws.GetRow(0).CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
            }

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                ws.CreateRow(i + 1);
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    ws.GetRow(i + 1).CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());
                }
            }

            FileStream file = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "Person.xls", FileMode.Create);//產生檔案
            wb.Write(file);
            file.Close();
        }


// 寫入到客戶端
     MemoryStream ms = new MemoryStream();
            wb.Write(ms);
            Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", HttpUtility.UrlEncode("Excel" + "_" + DateTime.Now.ToString("yyyy-MM-dd"), System.Text.Encoding.UTF8)));
            Response.BinaryWrite(ms.ToArray());
            Response.Flush();

            Response.End();
            wb = null;
            ms.Close();
            ms.Dispose();

C#.NET NPIO GridView 匯出



//using NPOI;
//using NPOI.HSSF.UserModel;
//using NPOI.XSSF.UserModel;
//using NPOI.SS.UserModel;
//using System.IO;


        #region NPIO GridView 匯出

        public void GridToExcel(string fileName, DataGridView dgv)
        {
            if (dgv.Rows.Count == 0)
            {
                return;
            }
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "Excel 2003格式|*.xls";
            sfd.FileName = fileName + DateTime.Now.ToString("yyyyMMdd_ss");
            if (sfd.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet = (HSSFSheet)wb.CreateSheet(fileName);
            HSSFRow headRow = (HSSFRow)sheet.CreateRow(0);
            for (int i = 0; i < dgv.Columns.Count; i++)
            {
                HSSFCell headCell = (HSSFCell)headRow.CreateCell(i, CellType.String);
                headCell.SetCellValue(dgv.Columns[i].HeaderText);
            }
            for (int i = 0; i < dgv.Rows.Count; i++)
            {
                HSSFRow row = (HSSFRow)sheet.CreateRow(i + 1);
                for (int j = 0; j < dgv.Columns.Count; j++)
                {
                    HSSFCell cell = (HSSFCell)row.CreateCell(j);
                    if (dgv.Rows[i].Cells[j].Value == null)
                    {
                        cell.SetCellType(CellType.Blank);
                    }
                    else
                    {
                        if (dgv.Rows[i].Cells[j].ValueType.FullName.Contains("System.Int32"))
                        {
                            cell.SetCellValue(Convert.ToInt32(dgv.Rows[i].Cells[j].Value));
                        }
                        else if (dgv.Rows[i].Cells[j].ValueType.FullName.Contains("System.String"))
                        {
                            cell.SetCellValue(dgv.Rows[i].Cells[j].Value.ToString());
                        }
                        else if (dgv.Rows[i].Cells[j].ValueType.FullName.Contains("System.Single"))
                        {
                            cell.SetCellValue(Convert.ToSingle(dgv.Rows[i].Cells[j].Value));
                        }
                        else if (dgv.Rows[i].Cells[j].ValueType.FullName.Contains("System.Double"))
                        {
                            cell.SetCellValue(Convert.ToDouble(dgv.Rows[i].Cells[j].Value));
                        }
                        else if (dgv.Rows[i].Cells[j].ValueType.FullName.Contains("System.Decimal"))
                        {
                            cell.SetCellValue(Convert.ToDouble(dgv.Rows[i].Cells[j].Value));
                        }
                        else if (dgv.Rows[i].Cells[j].ValueType.FullName.Contains("System.DateTime"))
                        {
                            cell.SetCellValue(Convert.ToDateTime(dgv.Rows[i].Cells[j].Value).ToString("yyyy-MM-dd"));
                        }
                    }

                }

            }
            for (int i = 0; i < dgv.Columns.Count; i++)
            {
                sheet.AutoSizeColumn(i);
            }
            using (FileStream fs = new FileStream(sfd.FileName, FileMode.Create))
            {
                wb.Write(fs);
            }
            MessageBox.Show("匯出成功!", "匯出出提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        #endregion

2018年4月10日 星期二

C# Excel 讀取 NPOI 並轉 DataTable (紀錄)

C# Excel 讀取 NPOI 並轉 DataTable
NPOI載點:http://npoi.codeplex.com/
只限分析.xls格式

public DataTable ExcelForDataTable(string strFilePath)
{
    HSSFWorkbook wk;

    using (FileStream fs = new FileStream(strFilePath, FileMode.Open))
    {
        wk = new HSSFWorkbook(fs);
    }

    //取得sheet名稱
    HSSFSheet hst;
    hst = (HSSFSheet)wk.GetSheetAt(0);

    //單行單行的取得sheet理的資料
    HSSFRow hr;

    DataTable dt = new DataTable();

    for (int i = 0; i < hst.LastRowNum; i++)
    {
        hr = (HSSFRow)hst.GetRow(i);

        //加入DataTable欄位
        if (i == 0)
        {
            for (int a = 0; a < hr.LastCellNum; a++)
            {
                dt.Columns.Add(hr.Cells[a].ToString());
            }

        }

        //加入資料
        else
        {
            DataRow dr = dt.NewRow();
            for (int a = 0; a < hr.LastCellNum; a++)
            {
                dr[a] = hr.Cells[a];
            }
            dt.Rows.Add(dr);

        }

    }

    return dt;

}

Jenkins-mail

參考:http://www.linuxea.com/1767.html 前置作業略過~有空再補 Mailer Plugin post { success { emailext ( subject: ...