NPOI動態獲取數據源綁定Gridview顯示

第一次用這個東西,還是比較順利,用起來也比較好 記錄一下

點擊下載此NPOI組件(601.6 KB)
[2010-08-10 09:34 AM; 下載次數:1]



1.引用

using NPOI;
using NPOI.HSSF;
using NPOI.DDF;
using NPOI.POIFS;
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;

2.主要代碼


  ///
        /// 綁定數據
        ///
        protected void BindExcelData()
        {

            //先上傳 再打開

            HSSFWorkbook workbook = new HSSFWorkbook(this.fupFile.FileContent);

            HSSFSheet sheet = workbook.GetSheetAt(0);

            DataTable table = new DataTable();

            HSSFRow headerRow = sheet.GetRow(0);

            int cellCount = headerRow.LastCellNum;

            //一定要對單元格類型作判斷 否則會報錯 cannot get a string value from a numeric cell
            for (int i = headerRow.FirstCellNum; i < cellCount; i++)
            {
                if (headerRow.GetCell(i) == null || headerRow.GetCell(i).StringCellValue.Trim() == "")
                {
                    // 如果遇到第一個空列,則不再繼續向後讀取            
                    cellCount = i + 1;
                    break;
                }
                DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);

                table.Columns.Add(column);
            }


            int rowCount = sheet.LastRowNum;

            for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
            {
                HSSFRow row = sheet.GetRow(i);
                if (row == null || row.GetCell(0) == null || row.GetCell(0).ToString().Trim() == "")
                {
                    // 如果遇到第一個空行,則不再繼續向後讀取                
                    break;
                }
                DataRow dataRow = table.NewRow();
                for (int j = row.FirstCellNum; j < cellCount - 1; j++)
                {
                    if (row.GetCell(j) != null)
                    {
                        dataRow[j] = row.GetCell(j).ToString();
                    }
                }
                table.Rows.Add(dataRow);
            }


            //workbook = null;
            //sheet = null;

            this.gdvList.DataSource = table;

            this.gdvList.AutoGenerateColumns = true;

            this.gdvList.DataBind();

            gdvList.DataKeyNames = new string[] { "IMEI" };

            this.gdvList.PageSize = 20000;

            lblCount.Text = gdvList.Rows.Count.ToString();
        }


來源:http://www.dezai.cn/blog/article.asp?id=352

3.要注意的地方

NPOI對日期格式的轉換,顯示出來的日期不是我們常用的yyyy-MM-dd格式,需要做特殊判斷


       public static string ConvertDate(string date)
        {
        
            string[] orginDate = date.Trim().Split('-');

            string year = orginDate[2].ToString().Trim();

            string day = orginDate[1].ToString().Trim();

            string month = orginDate[0].ToString().Trim();

            if (day.Length == 1)
            {
                day = "0" + day.ToString();
            }

            if (month.Length == 1)
            {
                month = "0" + month.ToString().Trim();
            }

            if (year.Length == 2)
            {
                year = "20" + year.ToString().Trim();
            }


            return year + "-" + month + "-" + day;

        }


http://www.dezai.cn/blog/article.asp?id=352

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章