透過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, ]
zithromax prescription in canada: ZithroPharm – zithromax 500 price
https://doxhealthpharm.com/# doxycycline uk pharmacy
zithromax over the counter uk: buy zithromax online fast shipping – how to get zithromax
https://clmhealthpharm.shop/# how to get generic clomid price
purchase amoxicillin online without prescription: Amo Health Pharm – buy amoxicillin online with paypal
El codigo promocional 1xBet 2025: “1XBUM” brinda a los nuevos usuarios un bono del 100% hasta $130. Ademas, el codigo promocional 1xBet de hoy permite acceder a un atractivo bono de bienvenida en la seccion de casino, que ofrece hasta $2275 USD (o su equivalente en VES) junto con 150 giros gratis. Este codigo debe ser ingresado al momento de registrarse en la plataforma para poder disfrutar del bono de bienvenida, ya sea para apuestas deportivas o para el casino de 1xBet. Los nuevos clientes que se registren utilizando el codigo promocional tendran la oportunidad de beneficiarse de la bonificacion del 100% para sus apuestas deportivas.
1xCasino argentina
347939 393436Its wonderful what supplementing can do for your body and your weight lifting goals! 889745
amoxicillin without prescription: Amo Health Pharm – amoxicillin 500mg cost
buy zithromax 1000mg online: ZithroPharm – zithromax drug
I have discovered that costs for internet degree specialists tend to be a terrific value. Like a full 4-year college Degree in Communication with the University of Phoenix Online consists of 60 credits with $515/credit or $30,900. Also American Intercontinental University Online comes with a Bachelors of Business Administration with a entire course element of 180 units and a price of $30,560. Online studying has made getting your college diploma so much easier because you can earn the degree in the comfort of your house and when you finish from office. Thanks for all the other tips I have really learned from your site.
cost of amoxicillin 30 capsules AmoHealthPharm buy amoxicillin online with paypal
amoxicillin where to get: amoxicillin capsule 500mg price – cheap amoxicillin 500mg
doxycycline purchase: doxycycline canadian pharmacy – buy doxycycline 100mg
https://doxhealthpharm.shop/# doxycycline canadian online pharmacy
can you buy doxycycline over the counter in canada: doxycycline 300 mg cost – buy generic doxycycline
http://zithropharm.com/# zithromax 1000 mg pills
buying cheap clomid without dr prescription: where can i buy clomid pills – can i buy clomid no prescription
canadian pharma companies
zithromax price south africa zithromax antibiotic zithromax online usa
http://doxhealthpharm.com/# cost of doxycycline australia
buy doxycycline online canada: buy online doxycycline – buy doxycycline 100mg online india
where can i buy cheap clomid online: cost generic clomid without insurance – can you get generic clomid prices
https://doxhealthpharm.com/# doxycycline 100mg capsules buy
zithromax 500 without prescription: Zithro Pharm – zithromax capsules
Nonetheless, most of the time, high yield funding opportunities create the wealth for investors quite than the average bank deposits and bond devices.
doxy: doxycycline 400 mg – cost of doxycycline in canada
https://clmhealthpharm.com/# can i order cheap clomid without a prescription
cost of clomid: how to buy clomid for sale – buying generic clomid without insurance
doxycycline tablets 100mg: doxycycline 100mg best buy – doxycycline order uk
amoxicillin 500mg prescription: where to buy amoxicillin pharmacy – amoxicillin discount coupon