**簡單範例**~**
**開始改用NPOI來處理Excel檔案的讀寫輸出,
感覺上比Excel DOM、OLE DB for JET、
甚至CSV法來得穩定輕巧,而NPOI功能的齊全--
--程度更是讓我驚喜連連**
**以下為使用NPOI讀取表格EXCEL檔,
自動轉成Data Table的簡單範例:**
**
using System.Data;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
public class NPOIHelper
{
public static DataTable
ReadExcelAsTableNPOI(string fileName)
{
using (FileStream fs =
new FileStream(fileName, FileMode.Open))
{
HSSFWorkbook wb =
new HSSFWorkbook(fs);
Sheet sheet = wb.GetSheetAt(0);
DataTable table = new DataTable();
//由第一列取標題做為欄位名稱
Row headerRow = sheet.GetRow(0);
int cellCount =
headerRow.LastCellNum;
for (int i =
headerRow.FirstCellNum; i < cellCount; i++)
//以欄位文字為名新增欄位,
此處全視為字串型別以求簡化
table.Columns.Add(
new DataColumn
(headerRow.GetCell(i).StringCellValue));
//略過第零列(標題列),一直處理至最後一列
for (int i =
(sheet.FirstRowNum + 1);
i < sheet.LastRowNum; i++)
{
Row row = sheet.GetRow(i);
if (row == null) continue;
DataRow dataRow = table.NewRow();
//依先前取得的欄位數逐一設定欄位內容
for (int j =
row.FirstCellNum; j < cellCount; j++)
if (row.GetCell(j) != null)
//如要針對不同型別做個別處理,
可善用.CellType判斷型別
//再用.StringCellValue
.DateCellValue, .NumericCellValue...取值
//此處只簡單轉成字串
dataRow[j] =
row.GetCell(j).ToString();
table.Rows.Add(dataRow);
}
return table;
}
}
} **
**範例假設Excel第一列視為標題列,讀取各欄位值
當成DataTable的Column名稱,建立欄位後,
逐一讀取各列的資料新增為Row,其中欄位內容一律視為字串處置**
**排版顯示純文字<%@ Page Language="C#" %>
<script type="text/C#" runat="server">void Page_Load(object sender, EventArgs e){System.Data.DataTable t =NPOIHelper.ReadExcelAsTableNPOI(Server.MapPath("~/App_Data/Koobe.xls"));
GridView1.DataSource = t;GridView1.DataBind();}</script><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><body><form id="form1" runat="server"><asp:GridView ID="GridView1" runat="server"></asp:GridView></form></body></html> ****補充一點,因為Excel檔案中儲存的是資料的原值加格式、***或是計算公式內容,並非套用格式及運算後的最終結果****故可能與Excel中看到的有點誤差。如下例中的第一列備註就由2011/5/12變成5/12/11,在應用時需留意 ******
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
沒有留言:
張貼留言
if you like make fds, wellcome you here~~anytime***
my free place for everyones who want the good software,
come & download them~ wellcome!!