1. 程式人生 > >Java讀取Excel並解析文字(並格式化輸出)

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解析文字(格式化輸出)

說明 最近在做一個比較小型的網站,需要批量匯入註冊使用者.使用者的資訊寫在一張excel表格裡面. 所以就需要讀取excel.所以就記錄下遇到的問題,以及以後檢視. 相關技術

java讀取excel檔案內容,讀取到的內容寫入到另一檔案中

需要匯入的jar包下載地址https://pan.baidu.com/s/16cTpUfx0KvKkbGYkXAUKMA 程式碼:ReadExcel.java //信1605-3 20163432 張運濤 package domain; import java.io.File; im

java讀取excel表格格式化輸出

首先是需要poi  jar包 import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.userm

java讀取excel文件內容,讀取到的內容寫入到另一文件中

dom tst trace 一個 讀取excel domain ble write 做出 需要導入的jar包下載地址https://pan.baidu.com/s/16cTpUfx0KvKkbGYkXAUKMA 代碼:ReadExcel.java //信1605-3 2

java讀取excel 檔案,讀取到的資料轉換成javabean物件

javaBean物件public class AcademicaChievements { private Integer aid; private String number; private String sname; private String award_

python讀取excel指定列資料寫入到新的excel

#encoding=utf-8 import xlrd from xlwt import * #------------------讀資料-------------------------------

Java讀取Excel表格以及讀取數字列轉為文字的解決辦法

Java讀取Excel表格程式碼和把數字列轉為文字的解決辦法。 所需 jar 包:dom4j-1.6.1.jar ,poi-3.8-20120326.jar,poi-ooxml-3.8-20120326.jar,poi-ooxml-schemas-3.8-20120326.

java 讀取資料庫圖片二進位制流輸出到jsp頁面

最近剛好遇到這個問題,剛開始在網上各種搜尋,看到大量有關該問題的博文。 大量文章有些不敢苟同,希望博主們要寫就認真寫,請不要浪費其他需要幫助的人的時間去驗證你的博文是否正確。 正文如下: 流程說明: 頁面點選某條資訊---》獲取id號---》傳人後臺進行條件查詢----》獲

C#讀取Excel表格中資料返回datatable

在軟體開發的過程中,經常用到從excel表格中讀取資料作為資料來源,以下整理了一個有效的讀取excel表格的方法。 DataTable GetDataTable(string tableName,string leftTopCel,string rightbutCel)

【Python】pandas遍歷讀取excel檔案,修改儲存(一)

code ide and lib version: python            2.7(64) pycharm            2018.1.4 xlrd            1.1.0 pandas            0.23.1 play:

java讀取word中的表格存入到mysql資料庫中例項

將D://word_export.doc(word2003)檔案中表格資料讀取出來並存入到資料庫中。表格資料如下圖所示: 20064001 劉景玉 1987-01-25 男 河南商丘 20064002 李會 1986-05-30 男

java獲取excel中資料,轉化為JSON格式

java通過poi讀取execl檔案,並且將其中的map格式和陣列格式的字串,轉化為相應的資料型別。 引入poi庫 讀取execl資料,轉化為json字串 將其中的map格式和陣列格式的字串,轉化為相應的資料型別 引入poi庫: <depen

java讀取excel獲取數據寫入到另外一個excel

string stat arr final user tostring enc ++ cef pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.a

java讀取Excel表格中的數據

bubuko str 需求 equal read sta alt 表格 nbsp 1、需求 用java代碼讀取hello.xls表格中的數據 2、hello.xls表格 3、java代碼 package com.test; import java.io.File;

java讀取excel文件數據導入mysql數據庫

l數據庫 ktr static null AD 第二周 pen 不支持 ace 這是我來公司的第二周的一個小學習任務,下面是實現過程: 1.建立maven工程(方便管理jar包) 在pom.xml導入 jxl,mysql-connector 依賴 可以在maven

Java讀取excel數據保存入庫

number date類型 put ase cep throws user workbook urn Java開發讀取excel表格數據入庫保存: List<Map<String, Object>> list = null; String fileP

第四篇:java讀取Excel簡單模板

場景:對於經常需要匯入Excel模板或資料來解析後加以應用的,使用頻率非常之高,做了一個比較穩定的版本,體現在這些地方工具:org.apache.poi使用前必須瞭解這些:1、要解析,那肯定先判斷是不是Excel2、xls字尾的Excel,是03版及以前的用HSSFWorkbook類  &

【Python筆記】操作讀取Excel檔案、文字檔案

需求:讀取Excel檔案、替換文字檔案中得指定某個字串並生成新的檔案 原始碼: #encoding:utf-8 # -*- coding: utf-8 -*- #!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2 #Author:

Java讀取Excel日期格式

//獲取單元格內容 private String getCellValue(HSSFCell cell) { if(cell == null){ return null; } String cellValue = ""; DecimalFormat df = new Deci

java讀取Excel資料

Java讀取Excel中的資料 一 下載匯入java.jxl.jar 二 新建一個Excel表格並且在裡面有內容(記得另存為97-2003版本,否則會出現 Unable to recognize OLE stream  異常) 三 編輯程式碼如下   如果有什麼寫的