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

18,144 Responses

  1. Danieljek表示:

    amoxicillin 500 mg for sale http://amoxilcompharm.com/# cost of amoxicillin

  2. Bradleygoath表示:

    amoxicillin without rx [url=http://amoxilcompharm.com/#]Amoxicillin for sale[/url] amoxicillin 500mg price in canada

  3. Bradleygoath表示:

    buying clomid prices clomid cost clomid without rx

  4. Oipnzl表示:

    гѓ—гѓ¬гѓ‰гѓ‹гѓі гЃЇйЂљиІ©гЃ§гЃ®иіј – г‚ўгѓўг‚­г‚·г‚·гѓЄгѓігЃЇи–¬е±ЂгЃ§иІ·гЃ€г‚‹пјџ г‚ёг‚№гѓ­гѓћгѓѓг‚ЇйЂљиІ©

  5. Тут можно преобрести сейф для сайги 12 оружейные шкафы москва

  6. BrettVup表示:

    Link Building Services
    ]complete link building services
    Hey there, future SEO rockstar! Ready to skyrocket your business to new heights? Let’s dive into the exciting world of link building services that can seriously amp up your online presence. Whether you’re just starting out or looking to boost your existing strategy, we’ve got the lowdown on the coolest methods out there—think crowd marketing, guest posting, PBNs, and more!
    Why Link Building is Your New Best Friend
    First things first: why should you care about link building? Well, in the digital universe, backlinks are like high-fives from other websites telling search engines, “Hey, this site is pretty cool!” The more quality high-fives you get, the more popular you become in the eyes of Google and friends. And you know what that means—higher rankings, more traffic, and a whole lot of new customers knocking on your virtual door.
    Guest Posting: Share Your Voice with the World
    Imagine getting to share your ideas on someone else’s platform and gaining their audience’s trust. That’s guest posting in a nutshell! You create killer content for other websites in your niche, and in return, you get a sweet backlink to your site. Why It’s Cool: You tap into new audiences, build your brand’s credibility, and boost your SEO. Pro Tip: Make sure your content is top-notch and adds real value. No one likes fluff!
    Crowd Marketing: Join the Conversation
    Crowd marketing is all about jumping into online communities—forums, social media groups, you name it—and sharing your wisdom. It’s not about shameless plugs; it’s about being genuinely helpful. Why It’s Cool: You build relationships, establish yourself as an expert, and earn organic backlinks. Pro Tip: Be authentic. People can spot a fake from a mile away.

  7. StevenNub表示:

    buy priligy: buy dapoxetine online – dapoxetine price

  8. Тут можно преобрести купить оружейный шкаф шкаф для оружия купить

  9. Michael Pao表示:

    Merci j’ai appris beaucoup avec ton article 🙂 !

  10. BrandenSlomy表示:

    max pharm: priligy maxpharm – dapoxetine price

  11. Danieljek表示:

    buy cheap amoxicillin https://amoxilcompharm.com/# where can you buy amoxicillin over the counter

  12. StevenNub表示:

    cost of generic clomid: buy clomid – how can i get cheap clomid online

  13. Shaunjen表示:

    buy erection pills http://canadiandrugsgate.com/# ed meds online without doctor prescription
    drugs that cause ed

  14. AntonioDit表示:

    Накрутка поведенческих факторов
    [url=https://nakrutka-povedencheskih.ru]seo накрутка поведенческих факторов цены[/url]
    Если ты когда-нибудь задумывался, почему твой сайт где-то на задворках Яндекса, а не сияет на первой странице, то ты по адресу. Сегодня мы разберемся, как раскрутить сайт в Яндексе, чем SEO для Яндекса отличается от Google, и что за загадочные поведенческие факторы все обсуждают. Поехали!
    Чем SEO для Яндекса отличается от Google?
    Давай начнем с того, что Яндекс и Google — это как два разных мира со своими правилами игры. Представь, что это как играть в футбол и в американский футбол: мяч вроде есть, но правила разные.

    1. Региональность
    Яндекс очень любит локальный контент. Если ты в Новосибирске, то Яндекс покажет тебе сайты из Новосибирска.
    Google более глобален и не так сильно зациклен на региональности.
    2. Поведенческие факторы
    Яндекс обращает внимание на то, как пользователи взаимодействуют с твоим сайтом: сколько времени проводят, сколько страниц просматривают и т.д.
    Google тоже смотрит на это, но не настолько фанатично.
    3. Ссылочное ранжирование
    Яндекс более скептически относится к количеству ссылок и больше ценит их качество.
    Google любит, когда на тебя ссылаются все и вся, но тоже ценит качество.
    4. Анализ контента
    Яндекс уделяет больше внимания морфологии русского языка и лучше понимает сложные конструкции.
    Google может иногда «спотыкаться» на наших падежах и склонениях.
    Что такое поведенческие факторы?
    А теперь к загадочным поведенческим факторам. Это как твой сайт ведет себя на первом свидании с пользователем. Если все круто — будет второе свидание (и хорошие позиции в выдаче).

    Основные поведенческие факторы:
    Время на сайте: сколько пользователь тусит на твоем сайте.
    Глубина просмотра: сколько страниц он посмотрел.
    Показатель отказов: ушел ли он сразу или задержался.
    Возвраты на сайт: возвращаются ли пользователи снова.

  15. Тут можно преобрести пожаростойкие сейфы сейф огнестойкий в москве

  16. JefferyTar表示:

    pharmacy website india: indianpharmacyeasy – indianpharmacy com

  17. Тут можно преобрести сейф под оружие оружейный сейф цена

發佈留言

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