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將Excel檔案上傳並解析為List陣列JavaExcel陣列
- poi解析Excel內容Excel
- java操作excelJavaExcel
- Java匯出ExcelJavaExcel
- java 匯出到EXCELJavaExcel
- java操作excel表格JavaExcel
- java 生成 excel檔案JavaExcel
- java使用poi生成excelJavaExcel
- 使用Java操作Excel表格JavaExcel
- 如何解析你,Excel 的 Date 呀Excel
- java 匯出 excel 最佳實踐,java 大檔案 excel 避免OOM(記憶體溢位) excel 工具框架JavaExcelOOM記憶體溢位框架
- Java與Excel的互動!-JavaExcel
- Java架構-Apache POI ExcelJava架構ApacheExcel
- Java操作Excel:POI和EasyExcelJavaExcel
- Java 將Excel轉為OFDJavaExcel
- java匯出Excel檔案JavaExcel
- java 匯入到EXCEL表格JavaExcel
- 如何將Excel檔案解析為json格式ExcelJSON
- Java解析XMLJavaXML
- Java ThreadLocal解析Javathread
- vue3 前端解析帶圖片的excelVue前端Excel
- 可用於解析 Excel 檔案的程式語言Excel
- poi 匯出Excel java程式碼ExcelJava
- 如在 Java 中分割 Excel 工作表JavaExcel
- Excel匯入匯出神器(Java)ExcelJava
- Java POI匯入Excel檔案JavaExcel
- java spring mvc jsp excel 匯入JavaSpringMVCJSExcel
- Java程式設計指南:高階技巧解析 - Excel單元格樣式的程式設計設定Java程式設計Excel
- java解析json listJavaJSON
- Java JUC PriorityBlockingQueue解析JavaBloC
- Java JUC CopyOnWriteArrayList 解析Java
- Java JUC ThreadPoolExecutor解析Javathread
- Java JUC ReentrantLock解析JavaReentrantLock
- Java JUC LinkedBlockingQueue解析JavaBloC
- Java JUC ReentrantReadWriteLock解析Java
- Java JUC ConcurrentLinkedQueue解析Java
- java 從EXCEL匯入到系統JavaExcel
- Java 將Excel轉為SVG的方法JavaExcelSVG
- XXL-EXCEL v1.1.1 釋出,Java物件和Excel轉換工具ExcelJava物件