透過Java解析Excel檔案

也是一個工作中遇到的情境,很多單位想讓內部人員利用Excel維護資料(因為維護上比較簡單方便),且想讓這份資料透過網頁呈現給一般網友閱讀,所以整體後端的流程應該是:

  1. 將維護的Excel透過網頁介面上傳
  2. 將上傳的Excel轉換成XML
  3. 網頁去讀取這份XML來呈現

透過以上的三個步驟,就可以完成客戶想要效果。

本範例展示的是讀取Excel的XLS格式(新版Excel為XLSX格式),並轉換成陣列的方法(寫入XML在前面的範例就有了),我們選用讀取Excel的Library是Apache POI,而檔內已經有以下的資料,其中Total是公式欄位,計算Price x Quantity:

IDNamePriceQuantityTotal
100001產品名稱110550
100002產品名稱22010200
100003產品名稱33015450

以下是讀取的程式範例:

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, ]

You may also like...

25,690 Responses

  1. SteveViand表示:

    https://usmexpharm.com/# Mexican pharmacy ship to USA

  2. Cletusiders表示:

    certified Mexican pharmacy: Us Mex Pharm – certified Mexican pharmacy

  3. Very good write-up. I absolutely love this website. Keep writing!

  4. Uncertain whether a secured loan is right for you? Explore the benefits, such as lower interest rates and increased flexibility.

  5. Cletusiders表示:

    mexican mail order pharmacies: certified Mexican pharmacy – mexican pharmacy

  6. DennisDor表示:

    USMexPharm: UsMex Pharm – mexican pharmacy

  7. Noah Wood表示:

    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.

  8. RandyKargo表示:

    UsMex Pharm USMexPharm certified Mexican pharmacy

  9. Ava Taylor表示:

    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.

  10. MicahTails表示:

    Us Mex Pharm: medication from mexico pharmacy – usa mexico pharmacy

  11. 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.

  12. DennisDor表示:

    best online pharmacies in mexico: UsMex Pharm – Mexican pharmacy ship to USA

  13. SteveViand表示:

    http://usmexpharm.com/# Us Mex Pharm

  14. 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

  15. RandyKargo表示:

    certified Mexican pharmacy mexican pharmacy usa mexico pharmacy

  16. Cletusiders表示:

    usa mexico pharmacy: UsMex Pharm – Mexican pharmacy ship to USA

  17. MicahTails表示:

    USMexPharm: certified Mexican pharmacy – usa mexico pharmacy

  18. MicahTails表示:

    certified Mexican pharmacy: Mexican pharmacy ship to USA – UsMex Pharm

  19. SteveViand表示:

    https://usmexpharm.shop/# mexican pharmacy

  20. Amelia Jones表示:

    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.

  21. Release the equity in your property with a secure home equity loan — ideal for funding home improvements, large expenses, or debt consolidation.

  22. Grace Davies表示:

    Are you considering a secured loan to consolidate your financial obligations? Explore your choices and see what solutions may be available to you.

  23. Cletusiders表示:

    Mexican pharmacy ship to USA: usa mexico pharmacy – USMexPharm

  24. Release the equity in your property with a secure home equity loan — ideal for covering home improvements, large expenses, or refinancing.

  25. Are you considering a loan against your home to consolidate your debts? Explore your choices and check what options may be available to you.

  26. 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.

  27. 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.

  28. DennisDor表示:

    Mexican pharmacy ship to USA: Mexican pharmacy ship to USA – certified Mexican pharmacy

  29. Andrewgow表示:

    pop over to these guys merrill lynch

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。