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();
SHOWcode
2018年4月11日 星期三
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;
}
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;
}
訂閱:
文章 (Atom)
Jenkins-mail
參考:http://www.linuxea.com/1767.html 前置作業略過~有空再補 Mailer Plugin post { success { emailext ( subject: ...
-
ASP.NET刷新頁面的六種方法 第一: private void Button1_Click( object sender, System.EventArgs e ) { Response.Redirect( Request.Url.ToSt...
-
foreach (string fname in System.IO.Directory.GetFileSystemEntries(@"C:\Users\joshs")) { //if (fn...