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

14,577 Responses

  1. Diplom_aeSr表示:

    купить диплом в красноярске vm-tver.ru .

  2. Diplom_nvSr表示:

    купить диплом в новокузнецке vm-tver.ru .

  3. FloydExpah表示:

    Neymar da Silva Santos Junior https://neymar.prostoprosport-ar.com is a Brazilian footballer who plays as a striker, winger and attacking midfielder for the Saudi Arabian club Al-Hilal and the Brazilian national team. Considered one of the best players in the world. The best scorer in the history of the Brazilian national team.

  4. Larryvof表示:

    Harry Edward Kane https://harry-kane.prostoprosport-ar.com is an English footballer, forward for the German club Bayern and captain of the England national team. Considered one of the best football players in the world. He is Tottenham Hotspur’s and England’s all-time leading goalscorer, as well as the second most goalscorer in the Premier League. Member of the Order of the British Empire.

  5. Diplom_mzSr表示:

    купить диплом в курске купить диплом в курске .

  6. Robertget表示:

    Yassine Bounou https://yassine-bounou.prostoprosport-ar.com also known as Bono, is a Moroccan footballer who plays as a goalkeeper for the Saudi Arabian club Al-Hilal and the Moroccan national team. On November 10, 2022, he was included in the official application of the Moroccan national team to participate in the matches of the 2022 World Cup in Qatar

  7. WilliamZorse表示:

    Anderson Sousa Conceicao better known as Talisca https://talisca.prostoprosport-ar.com is a Brazilian footballer who plays as a midfielder for the An-Nasr club. A graduate of the youth team from Bahia, where he arrived in 2009 ten years ago.

  8. Danieldob表示:

    Всем привет! Подскажите, где найтиразные статьи о недвижимости? Пока нашел https://dilerskiy-tsentr-baumit.ru

  9. Real_ywon表示:

    Шаги к получению лицензии на недвижимость|Легко и быстро получите лицензию на недвижимость|Подробное руководство по получению лицензии на недвижимость|Секреты быстрого получения лицензии на недвижимость|Инструкция по получению лицензии на недвижимость|Следуйте этим шагам для получения лицензии на недвижимость|Секреты успешного получения лицензии на недвижимость|Изучите основы получения лицензии на недвижимость|Эффективные стратегии получения лицензии на недвижимость|Инструкция по получению лицензии на недвижимость|Секреты профессиональной лицензии на недвижимость|Полезные советы по получению лицензии на недвижимость|Получите лицензию на недвижимость и станьте профессионалом|Топ советы по получению лицензии на недвижимость|Как получить лицензию на недвижимость легко и быстро|Как получить лицензию на недвижимость без стресса|Получение лицензии на недвижимость: лучшие практики и советы|Советы по успешному получению лицензии на недвижимость|Лицензия на недвижимость: ключ к успеху в индустрии недвижимости|Легко получите лицензию на недвижимость с этими советами|Простой путь к получению лицензии на недвижимость|Секреты успешного получения лицензии на недвижимость|Получение лицензии на недвижимость для начинающих: советы от экспертов|Простой путь к получению лицензии на недвижимость|Как получить лицензию на недвижимость: основные принципы и стратегии|Сек
    How to get real estate license in Ohio https://realestatelicensehefrsgl.com/states/ohio-real-estate-license/ .

  10. Iwefeq表示:

    purchase hydrea generic – ethionamide tablet order robaxin sale

  11. Williepexia表示:

    Cristiano Ronaldo https://cristiano-ronaldo.prostoprosport-ar.com is a Portuguese footballer, forward, captain of the Saudi Arabian club An-Nasr and the Portuguese national team. European Champion. Considered one of the best football players of all time. The best scorer in the history of football according to the IFFIS and fourth according to the RSSSF

  12. Alfredgex表示:

    Lionel Andres Messi Cuccittini https://lionelmessi.prostoprosport-ar.com is an Argentine footballer, forward and captain of the MLS club Inter Miami, captain of the Argentina national team. World champion, South American champion, Finalissima winner, Olympic champion. Considered one of the best football players of all time.

  13. OLaneevige表示:

    Каждый год в середине сентября организовывается Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен развитию механизмов инновационного продвижения отраслей топливно-энергетического комплекса, рассмотрению и определению заключений, организации наилучших условий для формирования инновационных проектов. Ежегодный тюменский форум является авторитетной дискуссионной площадкой по увеличению роста нефтегазовой сферы в России, имеет высокий статус и своевременность, созвучен корпоративной стратегии формирования инноваторского курса в России
    https://neftgaztek.ru/

  14. OLaneevige表示:

    Ежегодно в течение сентября организовывается Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен развитию мнтодов инноваторского роста областей топливно-энергетического комплекса, дискуссии а также изысканию решений, организации наилучших обстоятельств для формирования инноваторских проектов. Ежегодный тюменский форум представляетсобой влиятельной дискуссионной площадкой по развитию нефтегазовой отрасли в Российской Федерации, содержит большой авторитет и своевременность, созвучен общей стратегии формирования инновационного курса в Российской Федерации
    https://neftgaztek.ru/

  15. Lewisslund表示:

    Каждый год в течение сентября проходит Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен развитию способов инновационного роста секторов топливно-энергетического комплекса, рассмотрению а также поиску решений, организации благоприятных условий для развития инновационных проектов. Ежегодный тюменский форум является авторитетной дискуссионной площадкой по увеличению роста нефтегазовой ветви в России, имеет высокий авторитет и актуальность, созвучен общей стратегии формирования инновационного курса в Российской Федерации
    https://neftgaztek.ru/

  16. Your blog post is a testament to the power of storytelling. You had me hooked from the very first sentence!

  17. Have you ever considered about adding a little bit more than just your articles? I mean, what you say is important and everything. Nevertheless think of if you added some great visuals or videos to give your posts more, “pop”! Your content is excellent but with pics and video clips, this site could definitely be one of the greatest in its niche. Good blog!

  18. CharlesInach表示:

    buy tiktok views and likes buy tiktok likes

  19. CharlesInach表示:

    buy cheap tiktok likes buy tiktok likes

  20. Shaneevige表示:

    Ежегодно в течение сентября организовывается Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен развитию механизмов инноваторского роста областей топливно-энергетического комплекса, рассмотрению и определению ответов, организации наилучших условий для расчета инновационных проектов. Ежегодный тюменский форум представляетсобой авторитетной дискуссионной площадкой по развитию нефтегазовой ветви в России, имеет высокий авторитет и актуальность, созвучен корпоративной стратегии продвижения инновационного курса в Российской Федерации
    https://neftgaztek.ru/

  21. Timsothyabela表示:

    Ежегодно в течение сентября проходит Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен устройству способов инноваторского развития отраслей топливно-энергетического комплекса, дискуссии а также изысканию ответов, созданию благоприятных обстоятельств для формирования инновационных проектов. Ежегодный тюменский форум является авторитетной дискуссионной площадкой по увеличению роста нефтегазовой сферы в России, имеет высокий авторитет и своевременность, созвучен общей стратегии продвижения инновационного направления в Российской Федерации
    https://neftgaztek.ru/

  22. Jeluhi表示:

    piracetam tablet – buy piracetam pills for sale purchase sinemet online

  23. OLaneevige表示:

    Каждый год в течение сентября проходит Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен устройству мнтодов инноваторского продвижения секторов топливно-энергетического комплекса, обсуждению а также изысканию решений, образованию наилучших условий для расчета инноваторских проектов. Ежегодный тюменский форум представляетсобой авторитетной дискуссионной площадкой по увеличению роста нефтегазовой отрасли в России, имеет высокий статус и своевременность, созвучен корпоративной стратегии продвижения инновационного курса в России
    https://neftgaztek.ru/

  24. CharlesInach表示:

    cheap tiktok followers buy tiktok followers

  25. Shaneevige表示:

    Каждый год в середине сентября проводится Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен развитию механизмов инновационного развития областей топливно-энергетического комплекса, рассмотрению а также поиску ответов, образованию благоприятных условий для развития инновационных проектов. Ежегодный тюменский форум представляетсобой влиятельной дискуссионной площадкой по развитию нефтегазовой сферы в Российской Федерации, содержит большой авторитет и актуальность, созвучен корпоративной стратегии продвижения инноваторского направления в Российской Федерации
    https://neftgaztek.ru/

  26. porno_riEi表示:

    русский анал смотреть бесплатно русский анал смотреть бесплатно .

  27. Timsothyabela表示:

    Каждый год в течение сентября организовывается Тюменский инновационный форум «НЕФТЬГАЗТЭК».
    Форум посвящен устройству механизмов инновационного развития секторов топливно-энергетического комплекса, рассмотрению а также определению ответов, организации благоприятных условий для формирования инноваторских проектов. Ежегодный тюменский форум представляетсобой авторитетной дискуссионной площадкой по продвижению нефтегазовой ветви в Российской Федерации, имеет высокий авторитет и актуальность, созвучен корпоративной стратегии продвижения инновационного курса в России
    https://neftgaztek.ru/

發佈留言

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