首先下載NPOI組件,版本:NPOI 2.0
下載後添加引用(這裏有.net2.0版和4.0版的,按需引用)
使用方法如下:
/// <summary>
/// 保存成excel(NPOI方式)
/// </summary>
private void SaveToExcel()
{
List<Object> listFieldValue = FieldValueList;// 任意一個list或者其他數據
// 使用NPOI導出
NPOI.HSSF.UserModel.HSSFWorkbook stBook = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet stSheet = stBook.CreateSheet("參數計算表");
// 第一行(表頭)
NPOI.SS.UserModel.IRow stRow1 = stSheet.CreateRow(0);
stRow1.CreateCell(0).SetCellValue("字段名");
stRow1.CreateCell(1).SetCellValue("參數值");
stRow1.CreateCell(2).SetCellValue("最小值");
stRow1.CreateCell(3).SetCellValue("最大值");
stRow1.CreateCell(4).SetCellValue("計算方法");
int iTotalCount = listFieldValue.Count;
// 添加每一行數據
for (int i = 0; i < iTotalCount; i++)
{
NPOI.SS.UserModel.IRow stRowN = stSheet.CreateRow(i + 1);
stRowN.CreateCell(0).SetCellValue(listFieldValue[i].Name);
stRowN.CreateCell(1).SetCellValue(listFieldValue[i].Value);
stRowN.CreateCell(2).SetCellValue(listFieldValue[i].Min);
stRowN.CreateCell(3).SetCellValue(listFieldValue[i].Max);
stRowN.CreateCell(4).SetCellValue(listFieldValue[i].Method);
}
// 自動列寬
for (int i = 0; i < 5; i++)
{
stSheet.AutoSizeColumn(i);
}
Microsoft.Win32.SaveFileDialog dlgSave = new Microsoft.Win32.SaveFileDialog();
// 默認文件名
dlgSave.FileName = "新建Excel表格";
// 默認擴展名
dlgSave.DefaultExt = ".xls";
// 默認過濾器
dlgSave.Filter = "Excel表格 (.xls)|*.xls";
// 顯示保存對話框
Nullable<bool> bResult = dlgSave.ShowDialog();
if (bResult == true)
{
string strFileName = dlgSave.FileName;
// 實例化一個文件流
FileStream streamFile = new FileStream(strFileName, FileMode.Create);
// 獲得字節數組
System.IO.MemoryStream streamMemory = new System.IO.MemoryStream();
stBook.Write(streamMemory);
byte[] data = streamMemory.ToArray();
// 開始寫入
streamFile.Write(data, 0, data.Length);
// 清空緩衝區、關閉流
streamFile.Flush();
streamFile.Close();
stBook = null;
streamMemory.Close();
streamMemory.Dispose();
}
}