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

  1. Willardvah表示:

    Neymar da Silva Santos Junior https://neymar.prostoprosport-br.com e um futebolista brasileiro que atua como atacante, ponta e atacante. meio-campista do clube saudita Al-Hilal e da selecao brasileira. Considerado um dos melhores jogadores do mundo. O maior artilheiro da historia da Selecao Brasileira.

  2. Jasondak表示:

    Thomas Mueller https://thomasmueller.prostoprosport-br.com is a German football player who plays for the German Bayern Munich. Can play in different positions – striker, attacking midfielder. The most titled German footballer in history

  3. Секреты ухода за зубами, рекомендуем.
    Что такое эндодонтия, эффективный уход за зубами.
    Основные причины зубной боли, изучить.
    Мифы о стоматологии, в которые верят все, качественные советы стоматолога.
    Как избежать проблем с зубами, изучить.
    Как выбрать хорошего стоматолога, качественные методики стоматологии.
    Как правильно чистить зубы: секреты здоровой улыбки, прочитать.
    стоматологія допомога стоматологія допомога .

  4. Jeremywrips表示:

    Roberto Carlos da Silva Rocha https://roberto-carlos.prostoprosport-br.com Brazilian footballer, left back. He was also capable of playing as both a central defender and a defensive midfielder. World champion 2002, silver medalist at the 1998 World Championships.

  5. TravisImalm表示:

    Romelu Menama Lukaku Bolingoli https://romelulukaku.prostoprosport-br.com Futebolista belga, atacante do clube ingles Chelsea e da selecao belga . Por emprestimo, ele joga pelo clube italiano Roma.

  6. I am extremely impressed along with your writing skills and also with the layout in your weblog. Is that this a paid subject matter or did you customize it yourself? Either way keep up the nice quality writing, it is uncommon to look a nice weblog like this one today..

  7. Идеальные тактичные штаны для любого случая, сделанные из качественных материалов.
    Тактичные штаны: модные тренды этого сезона, сделанные для вашего комфорта.
    Советы по выбору тактичных штанов, чтобы выглядеть стильно в любой ситуации.
    Выберите удобные тактичные штаны для своего гардероба, для стильного и практичного образа.
    Какие материалы лучше всего подойдут для тактичных штанов, чтобы чувствовать себя комфортно в любой ситуации.
    тактичні штани купити https://vijskovitaktichnishtanu.kiev.ua/ .

  8. Nmqfky表示:

    cyclophosphamide ca – meclizine 25mg over the counter cheap vastarel

  9. Virgilwaila表示:

    Почему сотрудники Колокольцева провоцируют социальный протест
    Лайф-из-Гуд
    15 февраля пайщики кооператива «Бест Вей» по всей России намерены провести акции в поддержку кооператива. Кооператив работает в 72 регионах, в более чем 50 из них созданы инициативные группы и подаются заявки на проведение митинга.

    Эти действия спровоцированы действиями следственной группы ГСУ ГУ МВД России по Санкт-Петербургу и Ленинградской области, которая заблокировала работу кооператива, арестовала его счета, арестовала всю недвижимость кооператива, хотя за более чем год расследования не нашла никаких свидетельств мошенничества в кооперативе.

    15 февраля 2022 года начались активные действия следственной группы против кооператива — аресты и первый обыск в офисе с выносом всех документов. Позднее были заблокированы счета кооператива: на них находится 3,8 млрд рублей, причем сумма увеличивается, так как большинство пайщиков продолжает платить членские взносы и вносить паевые платежи.

    Несмотря на то что кооператив трижды добивался в суде снятия ареста, следствие вновь выходило в суд с фактически тем же самым ходатайством и пытается, пользуясь своими полномочиями, уничтожить юридическое лицо, и накладывался новый арест.

    В периоды, когда арест снимался, следствие за счет давления на банки добивалось того, чтобы платежи не проходили. Так происходит и сейчас, хотя с 19 января арест со счетов кооператива судом снят. Невзирая на претензионные письма кооператива в банки, жалобы кооператива в Центробанк и подготовку исковых заявлений против банков, Сбербанк и банк «Санкт-Петербург», получив, по свидетельству самих банковских работников, устное предупреждение следствия и «после звонков из Москвы», отказываются разблокировать счета, прямо нарушая постановление суда, снявшего арест со счетов.

    Офис кооператива дважды обыскивался, документы дважды изымались, и следствие запрещало копировать документацию.

    С самого начала расследование дела происходит при информационной поддержке помощника Колокольцева Ирины Волк, подчиненной ей пресс-служба министерства, разнообразные пристяжные «СМИ» типа «Дежурной части» на НТВ. К поддержке привлекли и самого министра: он говорил о деле кооператива «Бест Вей» в своем выступлении в Совете Федерации осенью 2022 года. По некоторым данным, «авторами» дела являются руководители ГУЭБиПК МВД России, облеченные доверием министра.

    Следствие по-питерски
    Характерно, что дело не «забрал» себе Следственный департамент МВД России. Оно расследуется ГСУ ГУ МВД России по Санкт-Петербургу и Ленинградской области — по месту регистрации кооператива, несмотря на общероссийский характер деятельности «Бест Вей». Это значит, что даже авторы атаки в центральном аппарате МВД не уверены в ее успехе.

    Кураторы дела в федеральном МВД шанс проявиться, и они «роют землю», не гнушаются прямым нарушением закона, чтобы проявить себя. Кто эти героические работники юстиции? Прежде всего руководитель следственной группы майор юстиции Екатерина Сапетова и ее непосредственный руководитель подполковник юстиции Константин Иудичев.

    Четверо технических сотрудников, не имевших никакого отношения к руководству кооперативом, трое из которых молодые женщины, были арестованы, хотя им вменялся «экономический» состав и они никогда не привлекались к уголовной ответственности. Они уже около года томятся в СИЗО, причем с ними почти не проводится следственных действий. По мнению адвокатов, от них ждут показаний на начальство.
    Пятеро граждан объявлены в розыск, в том числе давно отошедший от текущего управления кооперативом его основатель и бывший председатель Совета кооператива Роман Василенко. 80-летних родителей Романа Василенко, ветеранов Вооруженных сил, постоянно таскают на многочасовые допросы, в ходе которых им неоднократно требовалась срочная медицинская помощь, им угрожают СИЗО.

    Усилия следствия не привели к адекватным для судов результатам. Компрометирующих кооператив показаний ни от арестованных, ни от пожилых родственников людей, объявленных в розыск, получить не удалось, а пул потерпевших, собранный с огромным трудом, и их претензии выглядят неубедительно даже в наших судах, которые обычно дают следствию карт-бланш на период предварительного расследования.

    Кульбиты обвинения
    Следствие и пресс-структуры МВД рассказывают судам и прессе о «12 тысячах пострадавших», однако за более чем год работы им удалось получить заявления от сотни с небольшим потерпевших с общей суммой претензий около 150 млн рублей, хотя активы кооператива — более 15 млрд рублей. Предварительное расследование забуксовало.

    Притом что следователи работают не покладая рук, телефонными звонками и письмами (есть в редакции) приглашая всех, кто так или иначе взаимодействовал с кооперативом, написать заявление.

    Потерпевшие делятся на три группы. Первая — граждане, подавшие заявление по поводу действий другого юридического лица — компании высокодоходных инвестиций, которая контролировалась одним из прежних руководителей кооператива. Следствие пытается объявить эту компанию аффилированной с кооперативом, хотя между ними не было даже никаких взаиморасчетов, и пытается через псевдоаффилированность заставить кооператив заплатить по счетам другого юридического лица. Кстати, инвесткомпания — «живая», у нее есть активы в России, есть активы и у ее учредителей.

    Вторая — пайщики кооператива, которые не могут получить свои паевые средства из-за того, что следствие арестовало счета. Среди них нет ни одного заявления о том, что кооператив взял деньги пайщика на покупку квартиры и не купил квартиру или взял паевые средства в рамках договора и отказался выполнять требования договора о возврате средств. Это люди, обманутые следствием, убедившим их в том, что только участие в расследовании поможет получить назад вложенные средства, хотя на самом деле получить их назад в реальном времени помогут исключительно разблокировка работы кооператива, снятие ареста со счетов.

    Часть потерпевших, возможно, выступила соавтором атаки на кооператив: это группа граждан, которые когда-то вышли из кооператива «Бест Вей» и создали «альтернативный» кооператив — ЖК «Вера» (зарегистрирован в Ухте, но работает, как и «Бест Вей», по всей России). И против них адвокаты кооператива после завершения предварительного расследования намерены подать заявления о клевете.

    Часть потерпевших — люди, которые пытаются поживиться, выдвигая необоснованные требования к кооперативу. Например, претензии некоторых потерпевших касаются вступительных или членских взносов, которые по договору с кооперативом не подлежат возврату.

    В рамках следственных действий зачастую выясняется, что они не считают, что кооператив их обманул. Типична ситуация, когда псевдопотерпевшие внесли первоначальный безвозвратный взнос для вступления в кооператив — 110 тыс. рублей, причем некоторые даже не полностью, при этом паевые платежи для накопления первоначального паевого взноса не вносили, членские взносы — тоже.

    Квартира им, разумеется, не приобреталась — они в своих показаниях на это и не претендуют. Однако они по наущению следствия или по собственной инициативе и при поддержке следствия подписали заявление о том, что кооператив не вернул им несколько десятков тысяч рублей, которые по договору с кооперативом возврату не подлежат, так как это вступительные или членские взносы, идущие, согласно уставу, на финансирование текущей деятельности и развития кооператива.

    Это очередное свидетельство махинаций, совершаемых следствием: ведь потерпевший — лицо, считающее, что в отношении него совершено преступление. Из показаний, имеющихся в уголовном деле, видно, что большинство потерпевших так не считает.

    Многие из них не сами пришли в следственные органы, а после звонка следователя, предложившего подать заявление в качестве потерпевших. Пайщики кооператива жалуются на систематический обзвон следователей из следственной группы Сапетовой, письма следователей, незаконные встречи со следователями с назойливыми советами подать заявление в качестве потерпевших — подавляющее большинство пайщиков от этого отказывается, понимая, что необоснованное обвинение в преступлении приведет к ответственности.
    Банковские секьюрити — лучшие друзья следствия
    Суды первоначально штамповали все ходатайства следствия, как водится в российской системе юстиции, на этапе предварительного расследования. Однако с некоторых пор вопросы к следствию стали возникать и у судей.

    Ведь расследование продлевается, продлевается и продлевается, а промежуточные результаты его не впечатляют. Возникает много вопросов. Почему следствие не разрешает проводить налоговые платежи? На каком основании оно требует заблокировать на счетах средства, более чем в 25 раз превышающие сумму ущерба, имеющуюся в деле? На каком основании требует арестовать недвижимость на 12 млрд рублей, в том числе перешедшую в собственность пайщиков?

    Кооператив трижды добивался снятия ареста со счетов, добивался разблокирования налоговых платежей. Снимались аресты с недвижимости кооператива в целом. Кроме того, суды принимали решения о снятии арестов с отдельных квартир, и эти решения вступили в законную силу.

    Тем не менее арест со счетов де-факто не снимался, за исключением короткого периода летом 2022 года длиной в полторы недели (в эти полторы недели кооператив успел вернуть паевые взносы 216 пайщикам).

    Службы безопасности банков блокируют платежи кооператива — банковские службы безопасности стали лучшими помощниками следствия вместо судов. Так, 18 января суд отказался продлить арест счетов, кроме суммы в 200 млн рублей — имеющиеся в деле обязательства перед потерпевшими плюс те, которые могут возникнуть. С 19 января счета не арестованы, но де-факто арест продолжается. Сбербанк и банк «Санкт-Петербург» не пропускают платежи, несмотря на претензионные письма и готовящиеся исковые заявления кооператива и жалобы в Центральный банк.
    Банки в деле?
    Есть основания считать, что банки, прежде всего Сбербанк, в Северо-Западном банке которого размещен счет паевых средств кооператива, не пассивные исполнители воли следствия.

    Заинтересованность в первую очередь связана с уничтожением альтернативной программы покупки квартир. Кроме того, банки заинтересованы в использовании средств на счетах: их можно крутить месяцами, зарабатывая колоссальные средства. Этот метод подсказывают западные банки, которые, заблокировав деньги России, за счет процентов их использования получают серьезные финансовые ресурсы.

    Вероятно, у Сбербанка вызвала интерес также цифровая система взаимодействия с клиентами, созданная в кооперативе: есть ряд свидетельств, что она скопирована IT-специалистами Сбера. Северо-Западный банк Сбербанка когда-то активно предлагал сотрудничество кооперативу, добивался размещения счета именно у себя – возможно, не без умысла.

    Пайщики знают, кто виноват
    Пайщики кооператива возмущены происходящим. Ведь уже год из-за ареста счетов они не могут приобрести квартиры, средства на приобретение которых перечислили; они не могут получить паевые средства назад, чтобы использовать их для покупки квартир другим способом; они не могут получить справки в кооперативе для наследования пая — документация в кооперативе изъята, и следствие даже не разрешает ее копировать. При этом они прекрасно отдают себе отчет в том, что именно ведомство Колокольцева, решившее состряпать громкое дело на пустом месте, хотя ни деньги, ни квартиры не украдены, — автор их злоключений.

    Пайщики написали тысячи обращений в следственную группу, прокуратуру, уполномоченному по правам человека, проводились импровизированные митинги в судах. Теперь настал черед больших митингов по всей России.

    Сотрудники Колокольцева на пустом месте создали липовое громкое дело ради внимания первого лица страны к непримиримой борьбе с мошенниками, обирающими граждан. Хотя на самом деле именно следствие само и обирает граждан, в обстановке социальной нестабильности в стране создает дополнительный повод для массового возмущения, уничтожает уникальную программу приобретения недвижимости без банковских переплат — фактически под 1% годовых, в рамках которой уже приобретено более 2,5 тыс. квартир.

    Создан кризис на пустом месте, который наносит ущерб гражданам России и стране в целом. В условиях военного противостояния, социально-экономической турбулентности, предвыборной ситуации цена действий подразделений МВД непомерно высока – министру и политическому руководству страны пора вмешаться.

  10. DavidQuapy表示:

    Victor James Osimhen https://victor-osimhen.prostoprosport-br.com e um futebolista nigeriano que atua como atacante. O clube italiano Napoli e a selecao nigeriana.

  11. Geraldwaw表示:

    Virgil van Dijk https://virgilvandijk.prostoprosport-br.com Futebolista holandes, zagueiro central, capitao do clube ingles Liverpool e capitao do a selecao holandesa.

  12. Brandondew表示:

    Antoine Griezmann https://antoine-griezmann.prostoprosport-br.com Futebolista frances, atacante e meio-campista do Atletico de Madrid. Jogador e vice-capitao da selecao francesa, integrante da selecao – campea mundial 2018. Medalhista de prata no Europeu de 2016 e no Mundial de 2022.

  13. Williamdip表示:

    Ederson Santana de Moraes https://edersonmoraes.prostoprosport-br.com Futebolista brasileiro, goleiro do clube Manchester City e da Selecao Brasileira . Participante do Campeonato Mundial 2018. Bicampeao de Portugal pelo Benfica e pentacampeao de Inglaterra pelo Manchester City.

  14. конференц оборудование купить http://www.oborudovanie-konferenc-zalov11.ru .

  15. конференц залы оборудование конференц залы оборудование .

  16. Jerrygok表示:

    Kevin De Bruyne https://kevin-de-bruyne.prostoprosport-br.com Futebolista belga, meio-campista do Manchester club City” e a selecao belga. Formado pelos clubes de futebol “Ghent” e “Genk”. Em 2008 iniciou sua carreira adulta, fazendo sua estreia no Genk.

  17. система оснащения конференц залов https://oborudovanie-konferenc-zalov11.ru .

  18. Thca Flower表示:

    Fantastic web site. A lot of useful information here. I?m sending it to some friends ans also sharing in delicious. And of course, thanks for your sweat!

  19. Brianfam表示:

    памятники из черного гранита мраморный щебень

  20. оборудование для конференц зала купить оборудование для конференц зала купить .

  21. конференц зал оборудование конференц зал оборудование .

  22. HowardSwaxy表示:

    Robert Lewandowski https://robert-lewandowski.prostoprosport-br.com e um futebolista polones, atacante do clube espanhol Barcelona e capitao da selecao polonesa. Considerado um dos melhores atacantes do mundo. Cavaleiro da Cruz do Comandante da Ordem do Renascimento da Polonia.

  23. EnriqueVew表示:

    Gareth Frank Bale https://garethbale.prostoprosport-br.com Jogador de futebol gales que atuou como ala. Ele jogou na selecao galesa. Ele se destacou pela alta velocidade e um golpe bem colocado. Artilheiro (41 gols) e recordista de partidas disputadas (111) na historia da selecao.

  24. конференц зал оборудование оснащение конференц зал оборудование оснащение .

  25. MichaelCar表示:

    Thibaut Nicolas Marc Courtois https://thhibaut-courtois.prostoprosport-fr.com Footballeur belge, gardien de but du club espagnol du Real Madrid . Lors de la saison 2010/11, il a ete reconnu comme le meilleur gardien de la Pro League belge, ainsi que comme joueur de l’annee pour Genk. Triple vainqueur du Trophee Ricardo Zamora

  26. RobertNat表示:

    Luis Alberto Suarez Diaz https://luis-suarez.prostoprosport-br.com Uruguayan footballer, striker for Inter Miami and Uruguay national team. The best scorer in the history of the Uruguay national team. Considered one of the world’s top strikers of the 2010s

發佈留言

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