透過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, ]
https://usmexpharm.com/# Mexican pharmacy ship to USA
certified Mexican pharmacy: Us Mex Pharm – certified Mexican pharmacy
Very good write-up. I absolutely love this website. Keep writing!
Uncertain whether a secured loan is right for you? Explore the benefits, such as lower interest rates and increased flexibility.
mexican mail order pharmacies: certified Mexican pharmacy – mexican pharmacy
USMexPharm: UsMex Pharm – mexican pharmacy
Discover how a homeowner loan can help you obtain the money you need without selling your home. Review lenders and tailor a plan that fits your needs.
UsMex Pharm USMexPharm certified Mexican pharmacy
If you’re a property owner looking to borrow money, a secured loan could be a wise option. Access better rates by using your home as security.
Us Mex Pharm: medication from mexico pharmacy – usa mexico pharmacy
I’m amazed, I have to admit. Seldom do I encounter a blog that’s both equally educative and entertaining, and let me tell you, you’ve hit the nail on the head. The problem is something which too few men and women are speaking intelligently about. Now i’m very happy that I found this in my hunt for something relating to this.
best online pharmacies in mexico: UsMex Pharm – Mexican pharmacy ship to USA
http://usmexpharm.com/# Us Mex Pharm
Thank you for sharing these wonderful blogposts. In addition, the optimal travel and medical insurance plan can often ease those concerns that come with vacationing abroad. Some sort of medical emergency can quickly become costly and that’s sure to quickly slam a financial stress on the family finances. Setting up in place the perfect travel insurance package deal prior to leaving is definitely worth the time and effort. Thank you
certified Mexican pharmacy mexican pharmacy usa mexico pharmacy
usa mexico pharmacy: UsMex Pharm – Mexican pharmacy ship to USA
USMexPharm: certified Mexican pharmacy – usa mexico pharmacy
certified Mexican pharmacy: Mexican pharmacy ship to USA – UsMex Pharm
https://usmexpharm.shop/# mexican pharmacy
You may be able to borrow more and enjoy lower monthly repayments by taking out a loan secured on your property. Find the best current offers today.
Release the equity in your property with a secure home equity loan — ideal for funding home improvements, large expenses, or debt consolidation.
Are you considering a secured loan to consolidate your financial obligations? Explore your choices and see what solutions may be available to you.
Mexican pharmacy ship to USA: usa mexico pharmacy – USMexPharm
Release the equity in your property with a secure home equity loan — ideal for covering home improvements, large expenses, or refinancing.
Are you considering a loan against your home to consolidate your debts? Explore your choices and check what options may be available to you.
Explore how a homeowner loan can help you obtain the money you need without parting with your home. Compare lenders and customise a plan that fits your needs.
Home equity release may provide the financial support you’ve been needing. Learn how to tap into the equity tied up in your home without having to move.
Mexican pharmacy ship to USA: Mexican pharmacy ship to USA – certified Mexican pharmacy
pop over to these guys merrill lynch
pop over here mymerrill login