C# 使用NPOI讀取Excel表格中第一個sheet中內(nèi)容存在DataTable中

很久沒寫文章了,主要是從java轉(zhuǎn)到c#,經(jīng)歷坎坷一言難盡呀,但最重的一點,就是變懶了。希望你們不要學(xué)小編。。。咳咳。。好干貨開始。

一、首先當(dāng)然要下載導(dǎo)入NPOI插件,這里呢我給個參考:
https://www.cnblogs.com/-Tiger/p/8880939.html
第一次做Excel表格功能的小伙伴們好好看下。
主要是這三個

二、前端用form表單提交即可,js或jq觸發(fā)form提交即可

 <form class="form-horizontal" id="uploadForm" enctype="multipart/form-data" action="寫你自己的路徑" >
 <input type="file" id="fileUpload" name="fileUpload">
 </form>

三、后臺代碼

using NPOI.SS.UserModel;        //NPOI
using NPOI.HSSF.Util;           //NPOI
using NPOI.HSSF.UserModel;      //NPOI
using NPOI.XSSF.UserModel;      //NPOI
 /// <summary>
        ///將Excel中第一個sheet中內(nèi)容導(dǎo)入到DataTable中
        /// 區(qū)分xsl和xslx分別處理
        /// </summary>
        /// <param name="filePath">Excel文件路徑,含文件全名</param>
        /// <param name="sheetName">此Excel中sheet名</param>
        /// <returns></returns>
        
        public DataTable ReadExcelToDataTable()
        {
            HttpPostedFileBase File = Request.Files["fileUpload"];//<input type="file" name="fileUpload">中name對應(yīng)獲取Excel文件
            Stream streamfile = File.InputStream;//將文件轉(zhuǎn)換成流
            DataTable dt = new DataTable();

            IWorkbook workbook = null;//創(chuàng)建一個工作薄來裝Excel表
            if (Path.GetExtension(File.FileName).ToLower() == ".xls".ToLower()) //filePath
            {//.xls
                #region .xls文件處理:HSSFWorkbook
                
                workbook = new HSSFWorkbook(streamfile);
                ISheet sheet = workbook.GetSheetAt(0);  //獲取第一個工作表(sheet)
                System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
                HSSFRow headerRow = (HSSFRow)sheet.GetRow(0);

                //一行最后一個方格的編號 即總的列數(shù) 
                for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)
                {
                    //SET EVERY COLUMN NAME
                    HSSFCell cell = (HSSFCell)headerRow.GetCell(j);

                    dt.Columns.Add(cell.ToString());
                }

                while (rows.MoveNext())
                {
                    IRow row = (HSSFRow)rows.Current;
                    DataRow dr = dt.NewRow();

                    if (row.RowNum == 0) continue;//The firt row is title,no need import

                    for (int i = 0; i < row.LastCellNum; i++)
                    {
                        if (i >= dt.Columns.Count)//cell count>column count,then break //每條記錄的單元格數(shù)量不能大于表格欄位數(shù)量 20140213
                        {
                            break;
                        }

                        ICell cell = row.GetCell(i);

                        if ((i == 0) && (string.IsNullOrEmpty(cell.ToString()) == true))//每行第一個cell為空,break
                        {
                            break;
                        }

                        if (cell == null)
                        {
                            dr[i] = null;
                        }
                        else
                        {
                            //dr[i] = cell.ToString();
                              if (cell.CellType == CellType.NUMERIC && DateUtil.IsCellDateFormatted(cell))
                            { 
                               dr[i] = cell.DateCellValue.ToString("yyyy-MM-dd hh:mm:ss"); // //如果內(nèi)容是時間格式轉(zhuǎn)成這種格式
                            }
                            else
                            {
                                dr[i] = row.GetCell(i).ToString();
                            }
                        }
                    }

                    dt.Rows.Add(dr);
                }
                #endregion
            }
            else
            {//.xlsx
                #region .xlsx文件處理:XSSFWorkbook
                
                workbook = new XSSFWorkbook(streamfile);
                ISheet sheet = workbook.GetSheetAt(0);
                System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
                XSSFRow headerRow = (XSSFRow)sheet.GetRow(0);



                //一行最后一個方格的編號 即總的列數(shù) 
                for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)
                {
                    //SET EVERY COLUMN NAME
                    XSSFCell cell = (XSSFCell)headerRow.GetCell(j);

                    dt.Columns.Add(cell.ToString());

                }

                while (rows.MoveNext())
                {
                    IRow row = (XSSFRow)rows.Current;
                    DataRow dr = dt.NewRow();

                    if (row.RowNum == 0) continue;//The firt row is title,no need import

                    for (int i = 0; i < row.LastCellNum; i++)
                    {
                        if (i >= dt.Columns.Count)//cell count>column count,then break //每條記錄的單元格數(shù)量不能大于表格欄位數(shù)量 20140213
                        {
                            break;
                        }

                        ICell cell = row.GetCell(i);

                        if ((i == 0) && (string.IsNullOrEmpty(cell.ToString()) == true))//每行第一個cell為空,break
                        {
                            break;
                        }

                        if (cell == null)
                        {
                            dr[i] = null;
                        }
                        else
                        {
                            //dr[i] = cell.ToString();
                               if (cell.CellType == CellType.NUMERIC && DateUtil.IsCellDateFormatted(cell))
                           {
                                dr[i] = cell.DateCellValue.ToString("yyyy-MM-dd hh:mm:ss"); //如果內(nèi)容是時間格式轉(zhuǎn)成這種格式
                           } else
                            {
                                dr[i] = row.GetCell(i).ToString();
                            }
                        }
                    }
                    dt.Rows.Add(dr);
                }
                #endregion
            }
            return dt;
        }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • “這四個男的要和我一起住嗎?”我嚇得往后推了一步,老爺爺看見我驚慌的樣子笑著給我說 “穿西裝的是沈浩峰,比較喜歡參...
    纖曄閱讀 258評論 0 0
  • 選自《你那么懂事,一定很辛苦吧》 作者:阿莫學(xué)長 愿你能夠找到屬于自己的知己, 也愿你縱然孤身一人,也終究有不那么...
    酷威文化閱讀 1,058評論 0 6
  • 正文: 觀察家認(rèn)為,未來科技最關(guān)鍵的發(fā)展方向是走人性化之路。閃爍著“人性”之光的產(chǎn)品將越來越多地出現(xiàn),高科技產(chǎn)品也...
    酒窩姑娘皮段段閱讀 2,370評論 0 2
  • 遇上一個這樣的人,你和他一起騎單車,無論是你坐在他的背后還是各自騎著,哪怕遙遙長路多么崎嶇;你和他坐或站著巴士,他...
    NICO_NICO閱讀 221評論 0 0

友情鏈接更多精彩內(nèi)容