透過Java解析Excel檔案
也是一個工作中遇到的情境,很多單位想讓內部人員利用Excel維護資料(因為維護上比較簡單方便),且想讓這份資料透過網頁呈現給一般網友閱讀,所以整體後端的流程應該是:
- 將維護的Excel透過網頁介面上傳
- 將上傳的Excel轉換成XML
- 網頁去讀取這份XML來呈現
透過以上的三個步驟,就可以完成客戶想要效果。
本範例展示的是讀取Excel的XLS格式(新版Excel為XLSX格式),並轉換成陣列的方法(寫入XML在前面的範例就有了),我們選用讀取Excel的Library是Apache POI,而檔內已經有以下的資料,其中Total是公式欄位,計算Price x Quantity:
ID | Name | Price | Quantity | Total |
100001 | 產品名稱1 | 10 | 5 | 50 |
100002 | 產品名稱2 | 20 | 10 | 200 |
100003 | 產品名稱3 | 30 | 15 | 450 |
以下是讀取的程式範例:
package CDIT.stanley; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class excelToXMLFullSample { static ArrayList<ArrayList<String>> excelData = new ArrayList<ArrayList<String>>(); public static void main (String[] args) throws FileNotFoundException{ excelData.clear(); String xlsPath = "C:\\Projects\\Javas\\sample.xls"; InputStream inputStream = null; inputStream = new FileInputStream (xlsPath); POIFSFileSystem fileSystem = null; try { fileSystem = new POIFSFileSystem (inputStream); @SuppressWarnings("resource") HSSFWorkbook workBook = new HSSFWorkbook (fileSystem); HSSFSheet sheet = workBook.getSheetAt (0); Iterator<?> rows = sheet.rowIterator (); while (rows.hasNext ()){ HSSFRow row = (HSSFRow) rows.next(); Iterator<?> cells = row.cellIterator (); ArrayList<String> rowData = new ArrayList<String>(); while (cells.hasNext ()){ HSSFCell cell = (HSSFCell) cells.next(); switch (cell.getCellTypeEnum()){ case STRING :{ rowData.add(cell.getStringCellValue()); break; } case NUMERIC : { rowData.add((int)cell.getNumericCellValue() + ""); break; } case FORMULA :{ switch(cell.getCachedFormulaResultTypeEnum()) { case STRING: rowData.add(cell.getStringCellValue ()); break; case NUMERIC: rowData.add((int)cell.getNumericCellValue() + ""); break; default: rowData.add(""); break; } } default: rowData.add(""); break; } } excelData.add(rowData); } } catch(IOException e){ System.out.println("IOException " + e.getMessage()); System.out.println("轉換失敗,請檢查Excel檔案與格式是否正確"); } for(int i=0 ; i<excelData.size(); i++){ System.out.println("Excel Row "+ i +" Data : " + excelData.get(i)); } } }
程式會把Excel內的資料轉換為ArrayList,輸出內容如下:
Excel Row 0 Data : [Product ID, Product Name, Product Price, Quantity, Total] Excel Row 1 Data : [100001, 產品名稱1, 10, 5, 50, ] Excel Row 2 Data : [100002, 產品名稱2, 20, 10, 200, ] Excel Row 3 Data : [100003, 產品名稱3, 30, 15, 450, ]
farmacia online: Ibuprofene 600 generico prezzo – Farmacie on line spedizione gratuita
dove acquistare viagra in modo sicuro: cialis farmacia senza ricetta – alternativa al viagra senza ricetta in farmacia
viagra 50 mg prezzo in farmacia viagra generico viagra originale in 24 ore contrassegno
прикольные картинки в приложении
Всё шуточки
прикольные анекдоты в приложении
Всё шуточки
Обработка деревянного дома от трупного яда https://dezinfekciya-ot-smerti-msk.ru/
I feel flu like symptoms.
And convenience are the main reasons for buying tadalafil vs vardenafil which is better pills using this comparative listing
If you wish to provide a directed donation of blood, contact our office, 1-2 weeks in advance of the operation.
Our Privacy Policy and TOS.
Real savings made if you buy on this site. Cheap tadalafil liquid drops to better manage symptoms
Experts estimate that the average person has more than fifty colds during a lifetime.
farmacie online autorizzate elenco Cialis generico controindicazioni acquistare farmaci senza ricetta
Профессиональный сервисный центр по ремонту бытовой техники с выездом на дом.
Мы предлагаем: сервисные центры по ремонту техники в мск
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
Профессиональный сервисный центр по ремонту парогенераторов в Москве.
Мы предлагаем: починить парогенератор
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
Профессиональный сервисный центр по ремонту парогенераторов в Москве.
Мы предлагаем: ремонт парогенератора на дому
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
viagra 100 mg prezzo in farmacia: viagra – viagra originale in 24 ore contrassegno
https://sildenafilit.pro/# kamagra senza ricetta in farmacia
farmacia online senza ricetta
viagra originale in 24 ore contrassegno: viagra prezzo – cialis farmacia senza ricetta
viagra prezzo farmacia 2023: viagra prezzo – pillole per erezione in farmacia senza ricetta
Farmacie online sicure: Farmacie che vendono Cialis senza ricetta – acquistare farmaci senza ricetta
Инфа служба поддержки вавада
farmacie online sicure Farmacie online sicure farmacie online affidabili
le migliori pillole per l’erezione: viagra senza prescrizione – viagra originale in 24 ore contrassegno
farmacia online: Farmacie on line spedizione gratuita – Farmacie online sicure
Что такое смешные картинки и как они появились
схд это серверное оборудование https://sistemy-khraneniya-dannykh.ru/
top farmacia online: Farmacie on line spedizione gratuita – Farmacie online sicure
miglior sito per comprare viagra online: viagra senza ricetta – miglior sito dove acquistare viagra
https://tadalafilit.com/# farmacie online sicure
comprare farmaci online con ricetta
I have been exploring for a bit for any high quality articles or blog posts on this sort of area . Exploring in Yahoo I at last stumbled upon this website. Reading this info So i am happy to convey that I have a very good uncanny feeling I discovered just what I needed. I most certainly will make certain to don?t forget this website and give it a look regularly.
acquisto farmaci con ricetta: Farmacia online migliore – acquistare farmaci senza ricetta
pillole per erezioni fortissime: acquisto viagra – viagra generico in farmacia costo
That is the right blog for anybody who wants to find out about this topic. You notice so much its almost hard to argue with you (not that I truly would want?HaHa). You definitely put a brand new spin on a subject thats been written about for years. Nice stuff, simply nice!