NPOI讀取Excel數據應用


NPOI 是 POI 項目的 .NET 版本。使用 NPOI 你就可以在沒有安裝 Office 或者相應環境的機器上對 WORD/EXCEL 文檔進行讀寫。NPOI是構建在POI 3.x版本之上的,它可以在沒有安裝Office的情況下對Word/Excel文檔進行讀寫操作。

需求:根據excel表格提供的SVN相對路徑將本地中A文件夾中涉及到的文件拷貝到B文件中(A和B兩個文件路徑所在位置不同)

分析:

  1. 如何讀取excle文檔?(怎樣根據讀取excle中的指定sheet信息,如何讀取某一列數據)
  2. 如果本地PS端未按照office辦公軟件,如何讀取?

常規做法如下:

把excel表格當作一個本地庫(可以理解為本地數據庫),利用ADO.ENT進行數據讀取,具體代碼如下:

 //創建一個數據鏈接 
            string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + fileName + ";Extended Properties=Excel 8.0";
            using (OleDbConnection myConn = new OleDbConnection(strCon))
            {
                string strCom = " SELECT * FROM [過程文檔$] ";
                myConn.Open();
                //打開數據鏈接,得到一個數據集 
                OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
                //創建一個 DataSet對象 
                DataSet ds = new DataSet();
                //得到自己的DataSet對象 
                myCommand.Fill(ds, "[過程文檔$]");
                DataTable dt = ds.Tables[0];
            
}

通過上述代碼,我們的調試的過程中發現以下幾個問題

  1. 讀取excel的版本必須和本地excel的provider保持一直(這種情況相對不靈活,如果excel版本更改,其他配置都需更改);
  2. 發現錯誤調試過程比較麻煩,耗費時間較大
  3. 本地必須安裝office excel軟件

那既然用傳統的方式操作比較麻煩,下面提供NPOI的解決方案,代碼如下:

            using (FileStream sr = new FileStream(fileName, FileMode.OpenOrCreate))
            {
                //根據路徑通過已存在的excel來創建HSSFWorkbook,即整個excel文檔
                HSSFWorkbook workbook = new HSSFWorkbook(sr);

                //獲取excel的第一個sheet
                Sheet sheet = workbook.GetSheetAt(0);

                //最后一列的標號  即總的行數
                int rowCount = sheet.LastRowNum;

                //從第二行開始,第一行為列名
                for (int i = 1; i <= sheet.LastRowNum; i++)
                {
                    //獲取索引2即為svn源路徑
                    string path = sheet.GetRow(i).GetCell(2).ToString();
                    if (!developPaths.Contains(path))
                    {
                        developPaths.Add(GetDevelopPath(path, copyCodeFileName));
                    }
                }

            }

相對於傳統做法來講,npoi將每個sheet當初了一個table,其代碼量相對較少,對開發的要求也比較低。

以下是NPOI的下載地址

http://download.csdn.net/detail/jun118166/7243415

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM