透過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, ]
Why MachFi is a Game Changer in DeFi.
With MachFi, DeFi on the Sonic Chain reaches new heights. Our unique borrow-lending platform allows users to create custom trading strategies that suit their needs and optimize performance. visit to https://machfi.net/
Why MachFi?
– Security: Built on the Sonic Chain’s robust blockchain technology.
– Flexibility: Custom strategies for lending and borrowing.
– Efficiency: Fast, reliable transactions with lower fees.
Experience the next generation of DeFi with MachFi.
canada viagra
http://doxhealthpharm.com/# how much is doxycycline cost
can i get clomid no prescription where can i get clomid now can i order generic clomid without dr prescription
Unlock New Opportunities with MachFi.
MachFi is at the forefront of decentralized finance on the Sonic Chain, providing an advanced borrow-lending platform. Our platform supports custom trading strategies, helping you unlock the full potential of your digital assets in a decentralized environment. visit to https://machfi.net/
Key Features of MachFi:
– Sonic Chain: Fast, secure, and reliable blockchain for DeFi transactions.
– Customizable Lending: Choose strategies that work best for you.
– Higher Returns: Capitalize on innovative DeFi solutions for superior returns.
Join MachFi now and redefine your digital financial strategy!
doxycycline prescription uk: buy doxycycline 500mg – doxycycline 100mg tablet
order amoxicillin uk: AmoHealthPharm – amoxicillin 500 mg tablet
where buy generic clomid: ClmHealthPharm – can i purchase generic clomid tablets
https://clmhealthpharm.shop/# can i get generic clomid without rx
cost of doxycycline: Dox Health Pharm – doxycycline capsules 50mg 100mg
can you buy amoxicillin over the counter: Amo Health Pharm – order amoxicillin no prescription
buying clomid prices: cheap clomid prices – can i buy cheap clomid price
buy doxycycline pills online: Dox Health Pharm – otc doxycycline no prescription
doxycycline buy no prescription cheapest doxycycline online can you buy doxycycline over the counter in canada
doxycycline 100 mg forsale outside the us doxycycline medicine doxycycline over the counter india
https://clmhealthpharm.shop/# clomid buy
buy amoxicillin online uk: where can i get amoxicillin – amoxicillin 500 mg tablet
every sales manager and store owner should have a training in sales management’
amoxicillin generic: AmoHealthPharm – amoxicillin online without prescription
https://clmhealthpharm.shop/# can i get generic clomid no prescription
where to buy zithromax in canada: zithromax z-pak – generic zithromax online paypal
where can i buy amoxicillin over the counter uk: amoxicillin 500 mg tablet – purchase amoxicillin online
zithromax coupon: where to get zithromax – zithromax
3626 doxycycline: cheap doxy – cost of doxycycline online canada
order amoxicillin online: Amo Health Pharm – amoxicillin 500 mg
doxycycline prescription cost: doxycycline 30 – doxycycline capsules 100mg price
buy doxycycline 100mg tablets Dox Health Pharm doxycycline 40mg capsules
http://clmhealthpharm.com/# can i order generic clomid
doxycycline 40 mg price: buy doxycycline south africa – doxycycline buy
https://zithropharm.com/# generic zithromax over the counter