NPOI是Apache License 2.0的開放原始碼函式庫,提供.NET程式開發人員在無安裝Microsoft Office的環境下,讀取和操作Office 97-2007文件。
問題說明:
當我們使用CreateSheet方法去創建一組新的工作表,如下面的程式碼:
HSSFWorkbook Workbook;
Workbook = new HSSFWorkbook();
Workbook.CreateSheet("Sheet1");
ISheet sheet = Workbook.GetSheetAt(0);
如果使用了下面的方法讀取工作表的row或cell的資料時,
會出現嚴重的Exception而無法知道原因!
例如:
IRow row;
row = sheet.GetRow(0);
if (row == null)
row = sheet.CreateRow(0);
解決方法:
當工作表使用CreateSheet("Sheet1")方法產生時,不能使用sheet.GetRow(0)的方法,必須直接使用CreateRow(0)的方法;對於Cell的操作也是一樣,否則伺服器會完全當機!
正確的方法如下:
IRow row = sheet.CreateRow(0);
ICell cell = row.CreateCell(0);
※記住了:在NPOI元件下使用CreateSheet()方法產生的工作表,初次操作row或cell時,要直接使用CreateRow或CreateCell,不能習慣性地先讀取row或cell再判斷是否為nll的方式!
2015年12月30日 星期三
2015年9月28日 星期一
實作動態加入AsyncFileUpload Control
●問題描述:
開發ASP.NET網站系統最常使用的檔案上傳元件為:AJAX Control Tool Kit的AsyncFileUpload Control,當實作頁面時可能遇到多資料列需要分別上傳檔案的情況
。
如果直接在頁面上嵌入很多的AsyncFileUpload Control,並不是王道的作法;本文試著將動態實作多個AsyncFileUpload Control的重點,說明如下:
一、UI頁面布置程式碼:
加入一組 Panel Control 即可
二、動態產生資料頁面如下:
三、實作『上傳檔案』按鈕的Click 或Command事件
protected void bu_Command(object sender, CommandEventArgs e)
{
Button bu = (Button)sender;
string id = bu.ID.TrimStart(new char[] { 'b', 'u' });
uploadHF.Value = id;
Panel1.Controls.Clear();
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "reroll", "__doPostBack();", true);
}
四、實作Post Back 後Page Load 動態加入AsyncFileUpload Control
if (string.IsNullOrEmpty(uploadHF.Value) == false)
{
string id = uploadHF.Value;
string fid = string.Format("up_{0}", id);//上傳檔案按鈕的容器ID
AsyncFileUpload afu = new AsyncFileUpload();
afu.Width = Unit.Percentage(60);
afu.ID = "afu" + id;
afu.UploadedComplete += AsyncFileUpload1_UploadedComplete;
afu.UploadedFileError += AsyncFileUpload1_UploadedFileError;
afu.OnClientUploadComplete = "UploadComplete";
//afu.ThrobberID = im.ID;
Page.Master.FindControl("ContentPlaceHolder1").FindControl("Panel1").FindControl (fid).Controls.Add(afu);
}
補充說明:此區塊還需要實作
1、AsyncFileUpload1_UploadedComplete
2、AsyncFileUpload1_UploadedFileError
3、UI頁面上的UploadComplete
以上的實作程式碼網路上很多範例這裡不再臚列。
五、完成頁面點選『上傳檔案』示例
※實作重點:必須在Page_Load事件中動態加入AsyncFileUpload Control
開發ASP.NET網站系統最常使用的檔案上傳元件為:AJAX Control Tool Kit的AsyncFileUpload Control,當實作頁面時可能遇到多資料列需要分別上傳檔案的情況
。
如果直接在頁面上嵌入很多的AsyncFileUpload Control,並不是王道的作法;本文試著將動態實作多個AsyncFileUpload Control的重點,說明如下:
一、UI頁面布置程式碼:
二、動態產生資料頁面如下:
protected void bu_Command(object sender, CommandEventArgs e)
{
Button bu = (Button)sender;
string id = bu.ID.TrimStart(new char[] { 'b', 'u' });
uploadHF.Value = id;
Panel1.Controls.Clear();
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "reroll", "__doPostBack();", true);
}
四、實作Post Back 後Page Load 動態加入AsyncFileUpload Control
if (string.IsNullOrEmpty(uploadHF.Value) == false)
{
string id = uploadHF.Value;
string fid = string.Format("up_{0}", id);//上傳檔案按鈕的容器ID
AsyncFileUpload afu = new AsyncFileUpload();
afu.Width = Unit.Percentage(60);
afu.ID = "afu" + id;
afu.UploadedComplete += AsyncFileUpload1_UploadedComplete;
afu.UploadedFileError += AsyncFileUpload1_UploadedFileError;
afu.OnClientUploadComplete = "UploadComplete";
//afu.ThrobberID = im.ID;
Page.Master.FindControl("ContentPlaceHolder1").FindControl("Panel1").FindControl (fid).Controls.Add(afu);
}
補充說明:此區塊還需要實作
1、AsyncFileUpload1_UploadedComplete
2、AsyncFileUpload1_UploadedFileError
3、UI頁面上的UploadComplete
以上的實作程式碼網路上很多範例這裡不再臚列。
五、完成頁面點選『上傳檔案』示例
※實作重點:必須在Page_Load事件中動態加入AsyncFileUpload Control
訂閱:
文章 (Atom)