透過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,788 Responses

  1. Garlandabsex表示:

    Прикольные картинки http://prikoly-shutki.ru/kartinki-prikolnye Что такое мемы.

  2. PatrickLef表示:

    Farmacia online miglior prezzo: Farmacie on line spedizione gratuita – farmacia online

  3. Kennethtub表示:

    http://farmaciait.men/# comprare farmaci online con ricetta
    п»їFarmacia online migliore

  4. PatrickLef表示:

    Farmacia online piГ№ conveniente: BRUFEN 600 mg 30 compresse prezzo – comprare farmaci online all’estero

  5. PatrickLef表示:

    acquistare farmaci senza ricetta: Cialis generico 5 mg prezzo – acquisto farmaci con ricetta

  6. PatrickLef表示:

    farmaci senza ricetta elenco: Brufen 600 prezzo – Farmacie online sicure

  7. AlqaPaish表示:

    If the mold is in a home the people will likely as not have their health compromised by breathing the mcotoxins put off by the spores.
    Buy direct from our online pharmacy. Your sildenafil 100mg dosage you can save dollars.
    SO think you have a better chance of being pregnant than I do Sabrina I was suppose to get my period on the 7th of this month.

  8. Edgarappow表示:

    acquisto farmaci con ricetta: Cialis generico prezzo – farmacie online sicure

  9. MichaelToP表示:

    viagra generico prezzo piГ№ basso viagra online siti sicuri viagra generico in farmacia costo

  10. Garlandabsex表示:

    Что такое лучший анекдот? История свежего анекдота, какие бывают.

  11. Garlandabsex表示:

    Что такое смешной анекдот? История свежего анекдота, какие бывают.

  12. Richardral表示:

    viagra online in 2 giorni viagra farmacia pillole per erezione immediata

  13. Сервисный центр предлагает мастер по ремонту телефона xiaomi ремонт телефона xiaomi адреса

  14. Armandosnot表示:

    Лучшие приколы на злобу дня
    Поднимите себе настроение!

  15. Отличный сайт! Всем рекомендую!винтовые сваи заказать спб

  16. Armandosnot表示:

    Смешные приколы на любой вкус
    Поднимите себе настроение!

  17. Kennethtub表示:

    https://brufen.pro/# Ibuprofene 600 generico prezzo
    farmacia online piГ№ conveniente

  18. Edgarappow表示:

    pillole per erezione in farmacia senza ricetta: viagra senza ricetta – gel per erezione in farmacia

  19. PatrickLef表示:

    siti sicuri per comprare viagra online: acquisto viagra – viagra cosa serve

  20. AvtyHesia表示:

    Keep in mind that each of these symptoms by itself may have a different reason and by itself is not a surefire sign pregnancy.
    yourself familiar with requirements for pharmacies that sell buy bayer levitra online from responsible pharmacies online if you desire competitive
    Hence a lab test must be performed to rule out these possibilities.

  21. AdmdHesia表示:

    He enjoys reviewing new edits, improving new articles, and voting on article deletions.
    Take advantage of low prices when you online pharmacy ratings Security when you make a deal at the lowest
    Unfortunately, many people with heart attack symptoms wait more than two hours to seek help, according to the National Institutes of Health.

  22. PatrickLef表示:

    comprare farmaci online con ricetta: Farmacie che vendono Cialis senza ricetta – farmacie online autorizzate elenco

  23. Richardral表示:

    acquisto farmaci con ricetta Farmacie online sicure Farmacie online sicure

  24. Ipdbbn表示:

    purchase omnicef sale – cleocin without prescription buy clindamycin

  25. WilliamSKESK表示:

    Этот телеграм канал откроет для вас мир чтения, подробнее – https://smartlibrary24.com/. Наш канал создан для того, чтобы удовлетворить любой литературный вкус. Любите ли вы захватывающие тайны, душещипательные романы, нехудожественную литературу или захватывающие приключения – у нас вы найдете все, что нужно. Мы гордимся тем, что предлагаем разнообразный выбор жанров, чтобы каждый нашел что-то для себя

發佈回覆給「Garlandabsex」的留言 取消回覆

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