透過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...

27,076 Responses

  1. ZackaryGer表示:

    http://vavadavhod.tech/# вавада зеркало

  2. KennethKex表示:

    pin up azerbaycan: pinup az – pin up azerbaycan

  3. Jasonthymn表示:

    Liquifi is built for modern crypto teams! With flexible Liquifi token vesting, Liquifi airdrop vesting, and smooth Liquifi Claim features, itтАЩs the all-in-one tool for managing token distribution. Need help? Liquifi contact is just a click away. Transparent Liquifi pricing and real Liquifi reviews make it a trusted solution. Want to know how it works? Start with the Liquifi app and explore the full Liquifi Guide. Liquifi where to start? Visit https://liquifi.tech and take control of your vesting now!

  4. Elmerbuils表示:

    pin up az: pin up casino – pin up azerbaycan

  5. Jamestonse表示:

    Exploring new DeFi tools? Ring Exchange is changing the game with its all-in-one Ring Exchange DEX and RingX Aggregator. From Ring Exchange staking to low Ring Exchange fees, it’s built for serious traders. Powered by Ring Protocol and the RING token, you get efficient swaps across chains like Ring Exchange BNB Chain and Ring Exchange Blast. Curious about Ring Exchange review? Users love the speed, design, and Ring Exchange security. Want to learn more? Check the Ring Exchange tutorial and start now at https://ringexchange.org !

  6. ScottCrano表示:

    Кредитный потребительский кооператив https://юк-кпк.рф разумный выбор для тех, кто ценит стабильность. Выдача займов, приём сбережений, поддержка пайщиков. Всё по закону, без скрытых комиссий и с личным вниманием к каждому участнику.

  7. Marcusflets表示:

    Займы под материнский капитал https://юсфц.рф быстрое решение для покупки квартиры, дома или участка. Без личных вложений, с полным юридическим сопровождением. Оформление за 1 день, надёжные сделки и опыт более 10 лет. Используйте господдержку с умом!

  8. EdwardWex表示:

    Надёжный обмен валюты https://valutapiter.ru в СПб — курсы в реальном времени, большой выбор валют, комфортные офисы. Конфиденциальность, без очередей, выгодно и с гарантией. Для туристов, жителей и бизнеса. Обмен, которому можно доверять!

  9. KennethKex表示:

    пин ап зеркало: пин ап казино официальный сайт – пин ап казино официальный сайт

  10. JoshuaTic表示:

    Exploring DeFi? Compound is changing the game with powerful Compound Finance tools designed for real results. Through the Compound app, users enjoy smart Compound lending, easy Compound borrowing, and competitive Compound interest rates. The Compound protocol is built on transparency, using Compound cTokens and driven by Compound governance. Want to grow your earnings? With high Compound APY and support for Compound Finance staking, you’re in control. Curious about Compound Finance review? Users love the security and reliability. Try it now—Compound Finance login at http://compound.ad and take charge of your Compound crypto journey today!

  11. DexterGogma表示:

    Об этом кворке
    Выполню прогон Хрумером по комментариям. Прогон сайта может быть анкорным или безанкорным. По результатам прогона вы получите программный отчёт в формате txt.

    Зачем нужны прогоны XRumer?

    Я использую прогоны Хрумером для нескольких задач, для которых Хрумер подходит идеально:

    Анкорный прогон информационных сайтов по очень широкой семантике (свои сайты прогоняю по 80% всей имеющейся семантики);
    Безанкорный прогон любых сайтов (для раскрутки и ускорения индексации белых сайтов, дорвеев, накрутки пузомерок, увеличения и разбавления ссылочной массы);
    Прогон Хрумером для ускорения индексации биржевых ссылок (если накупили биржевого хлама, который не хочет попадать в индекс);
    Многоуровневые ссылки (страница вашего сайта — 10 дорогих анкорных ссылок — 100 дешевых ссылок — прогон Хрумером);
    Прогон Хрумером отдельного домена с постраничным редиректом на основной сайт (отдельный домен можно неистово гонять, так как в любой момент он может быть отклеен от основного сайта, к тому же, эти ссылки можно скрыть от конкурентов).
    Д ля этих задач прогон Хрумером — идеальное решение. Кроме того, можно прогонять Хрумером не только страницы сайта, но и YouTube-видео, публикации в Pinterest или других соцсетях.

  12. Jamestonse表示:

    Say hello to Ring Exchange—the DeFi platform made for next-gen crypto users. Whether you’re trading on the Ring Exchange aggregator, exploring Ring Protocol crypto, or earning with Ring Exchange staking, the experience is seamless. Ring Exchange launchpad opens new project access, while the RING token powers the ecosystem. Wondering how it compares? See why traders are switching in every Ring Exchange review. Start your journey now at https://ringexchange.org !

  13. Richardfek表示:

    pin-up pin up azerbaycan pin-up casino giris

  14. Elmerbuils表示:

    вавада официальный сайт: vavada – вавада казино

  15. JosephSward表示:

    Looking to maximize your DeFi game? Explore Balancer, the ultimate platform for smart liquidity and optimized portfolios. With advanced Balancer features like Balancer Swap, Balancer stable pools, and Balancer Boost, it’s built for efficiency and control. Curious about Balancer token vesting or Balancer DAO vesting? The Balancer guide has it all. Plus, with Balancer security and top-notch Balancer governance, your assets are in good hands. Visit https://bccgame.org and experience the future of DeFi today!

  16. ZackaryGer表示:

    https://vavadavhod.tech/# вавада казино

  17. KennethKex表示:

    vavada вход: вавада официальный сайт – vavada casino

  18. Elmerbuils表示:

    vavada вход: вавада официальный сайт – vavada casino

  19. Robertdom表示:

    Looking to maximize your DeFi game? Explore Balancer, the ultimate platform for smart liquidity and optimized portfolios. With advanced Balancer features like Balancer Swap, Balancer stable pools, and Balancer Boost, it’s built for efficiency and control. Curious about Balancer token vesting or Balancer DAO vesting? The Balancer guide has it all. Plus, with Balancer security and top-notch Balancer governance, your assets are in good hands. Visit https://balancer.ac and experience the future of DeFi today!

  20. BrianStani表示:

    pin up вход: пин ап казино – пин ап казино официальный сайт

  21. Richardmitty表示:

    nba直播線上看
    隨著2024-25賽季NBA附加賽的火熱進行,球迷們的熱情也隨之高漲。每一場比賽都關乎球隊命運,而季後賽的激烈對決更是指日可待。對於忠實球迷來說,能夠即時觀看這些精彩賽事至關重要。NBA直播線上看服務應運而生,為球迷提供了便捷的觀賽體驗。無論是上班族抽空追賽,還是學生族群熬夜支持,都能通過手機、平板或電腦隨時隨地觀看比賽。高清畫質、專業解說和多角度回放,讓您仿佛置身現場,感受每一次扣籃和三分球帶來的震撼。除了賽事直播,許多平台還提供賽程表、球員數據和賽後分析等豐富內容。您可以輕鬆掌握各隊積分排名、明星球員表現,甚至深入了解戰術分析。對於喜愛運彩投注的朋友,即時的數據分析和專家預測也能成為您決策的重要參考。選擇可靠的NBA直播平台尤為重要。穩定的播放品質、低延遲的直播信號和完整的賽事覆蓋,都是評判標準。部分平台還提供會員專屬服務,如廣告免除、賽事回放和獨家內容等特權。隨著科技發展,NBA直播線上看服務不斷創新,為球迷帶來更加便捷、沉浸的觀賽體驗。不再受限於電視轉播,每一位球迷都能隨心所欲地追逐熱愛的籃球賽事,見證精彩時刻。

  22. DavidjaR表示:

    Account Acquisition Account Purchase

  23. BrianStani表示:

    pin-up: pin up azerbaycan – pinup az

  24. Richardfek表示:

    вавада официальный сайт vavada вход вавада казино

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

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