Java解析Excel
說明
最近在做一個比較小型的網站,需要批量匯入註冊使用者.使用者的資訊寫在一張excel表格裡面.
所以就需要讀取excel.所以就記錄下遇到的問題,以及以後檢視.
相關技術
使用的POI解析Excel需要使用的jar包
注(使用的maven.我就新增了右邊的兩個依賴就可以了)
分析
解析Excel首先就要解析Excel的結構.然後用物件導向的思想分析一下
這是一個excel檔案.下面我們就來分析一下如果讓你寫這個poi框架,那麼你會怎麼設計.
1. 首先要有一個物件表示這整個Excel檔案.
2. 可是這個excel檔案中有好多頁.Sheet1, Sheet2等等,所以我們還需要一個物件表示頁.
3. 在頁中,有行,所以還需要一個物件表示行.
4. 在行中,最後細分到格cell.
5. 格cell中資料還有好多型別.有字串,數字,時間等等.
POI中的物件與excel物件的對應
excel檔案就有多種型別了.字尾有 xls 與 xlsx
所以對於不同型別的檔案,就需要使用不同的poi中的物件了.
1. 如果你要解析的是xls檔案
從程式碼不難發現,這裡的處理邏輯是
1>. 先用inputstream獲取excel檔案的io流
2>. 然後建立一個記憶體中的excel檔案HSSFWorkbook型別物件.這個物件表示了整個excel檔案.
3>. 對這個excel檔案的每頁做迴圈處理
4>. 對每頁中的每行做迴圈處理.
5>. 對每行中的每個單元格做做處理,獲取這個單元格的值.
6>. 把這行的結果新增到一個List陣列中.
7>. 把每行的結果新增到最後的總結果中.
8>. 解析完以後就獲取了一個List< List < String > > 型別的物件了.
2. 如果你要處理xlsx型別的檔案則
和上面一樣,我就不說了.
存在的問題
其實有時候我們希望得到的資料就是excel中的資料,可是最後發現結果不理想
如果你的excel中的資料是數字,你會發現Java中對應的變成了科學計數法的.
所以在獲取值的時候就要做一些特殊處理.
這樣就能保證獲取的值是我想要的值.
網上的做法是對於數值型別的資料格式化,獲取自己想要的結果.
其實也沒有那麼麻煩.我在做的時候突然想到了一種處理解決方案.供參考
我們看一下poi中對於的toString()方法
該方法是poi的方法,從原始碼中我們可以發現,該處理流程是
1. 獲取單元格的型別
2. 根據型別格式化資料並輸出.這不一下子就造成了很多不是我們想要的.
所以我們就要改造一下這個方法例如這樣
我的做法是這樣的
1. 對於不熟悉的型別,或者為空則返回”” 控制串.
2.如果是數字,則修改單元格型別為String,然後返回String.這樣就保證數字不被格式化了.
3. 雖然不知道這麼做有什麼後果,可是成功了.
相關文章
- Java 解析 ExcelJavaExcel
- Java解析Excel例項解析JavaExcel
- JXL包大解析;Java程式生成excel檔案和解析excel檔案內容JavaExcel
- 解析ExcelExcel
- java實現將excel表格資料解析成JSONArrayJavaExcelJSON
- Excel上傳示例及後臺解析ExcelExcel
- java將Excel檔案上傳並解析為List陣列JavaExcel陣列
- poi解析Excel內容Excel
- 解析xlsx檔案---Java讀取Excel2007JavaExcel
- java操作excelJavaExcel
- java 匯出到EXCELJavaExcel
- java操作excel表格JavaExcel
- Java匯出ExcelJavaExcel
- JAVA讀寫excelJavaExcel
- Java 通過Xml匯出Excel檔案,Java Excel 匯出工具類,Java匯出Excel工具類JavaXMLExcel
- python3+xlrd解析ExcelPythonExcel
- 如何解析你,Excel 的 Date 呀Excel
- java使用poi生成excelJavaExcel
- 使用Java操作Excel表格JavaExcel
- java 生成 excel檔案JavaExcel
- Java操作Excel檔案JavaExcel
- java操作excel之jxlJavaExcel
- Java 下載 Excel模板JavaExcel
- java 匯出 excel 最佳實踐,java 大檔案 excel 避免OOM(記憶體溢位) excel 工具框架JavaExcelOOM記憶體溢位框架
- Java操作Excel:POI和EasyExcelJavaExcel
- Java 將Excel轉為OFDJavaExcel
- java匯出Excel檔案JavaExcel
- Java架構-Apache POI ExcelJava架構ApacheExcel
- Java與Excel的互動!-JavaExcel
- java 匯入到EXCEL表格JavaExcel
- java poi 匯出excel加密JavaExcel加密
- java通過JXL寫ExcelJavaExcel
- java程式碼 分解EXCEL(一)JavaExcel
- java字串解析Java字串
- 【Java】解析xmlJavaXML
- Java解析XMLJavaXML
- java MethodHandle解析Java
- java解析APKJavaAPK