轉(zhuǎn)帖|其它|編輯:郝浩|2010-06-22 11:38:57.000|閱讀 1144 次
概述:在Web應(yīng)用日益盛行的今天,通過(guò)Web來(lái)操作Excel文件的需求越來(lái)越強(qiáng)烈,目前較為流行的操作是在JSP或 Servlet 中創(chuàng)建一個(gè)CSV (comma separated values)文件,并將這個(gè)文件以MIME,text/csv類型返回給瀏覽器,接著瀏覽器調(diào)用Excel并且顯示CSV文件。這樣只是說(shuō)可以訪問(wèn)到 Excel文件,但是還不能真正的操縱Excel文件,本文將給大家一個(gè)驚喜,向大家介紹一個(gè)開(kāi)放源碼項(xiàng)目Java Excel API。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
JAVA EXCEL API簡(jiǎn)介
Java Excel是一開(kāi)放源碼項(xiàng)目,通過(guò)它Java開(kāi)發(fā)人員可以讀取Excel文件的內(nèi)容、創(chuàng)建新的Excel文件、更新已經(jīng)存在的Excel文件。使用該 API非Windows操作系統(tǒng)也可以通過(guò)純Java應(yīng)用來(lái)處理Excel數(shù)據(jù)表。因?yàn)槭鞘褂肑ava編寫(xiě)的,所以我們?cè)赪eb應(yīng)用中可以通過(guò)JSP、 Servlet來(lái)調(diào)用API實(shí)現(xiàn)對(duì)Excel數(shù)據(jù)表的訪問(wèn)。
Java Excel API 文檔
1.應(yīng)用示例:
如何從Excel讀取數(shù)據(jù):
package com.etong.allen; import java.io.*; import java.util.*; import com.roger.util.StringUtil; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; /** *//** * Title: * Description: Excel數(shù)據(jù)導(dǎo)入到 oracle數(shù)據(jù)庫(kù)類. * * Copyright: Copyright (c) 2004 * Company: 易通技術(shù)有限公司 * @author Allen * @version 1.0 */ public class ExcelImportOracle ...{ /** *//** * 用于返 回三維數(shù)組的ArrayList. */ private static ArrayList subdata = new ArrayList(); /** *//** * Excel中的表名. */ private static String tablename; /** *//** * 文件的路徑 */ private static String filePath; /** *//** * 該方法為完成讀取Excel中的數(shù)據(jù)并將數(shù)據(jù)插入到對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中的操作(在調(diào)用前需要先調(diào)用 setFilePath(String)這個(gè)方法.). * @author Administrator * @param data:讀取Excel中的數(shù)據(jù)的數(shù)組. * @deprecated:將讀取Excel中的數(shù)據(jù)插入到對(duì)應(yīng)的數(shù)據(jù)庫(kù)表 中. * */ public static void ExcelDataImportOracle(String filePath) throws Exception ...{ try ...{ ArrayList al = readExcel(filePath); InsertData(al); } catch (Exception e) ...{ e.printStackTrace(); } } /** *//** * 讀取Excel中的數(shù) 據(jù).將這些數(shù)據(jù)放入到一個(gè)三維數(shù)組中. * @author Administrator * @param filePath 文件路徑. * @deprecated:讀取Excel中的數(shù)據(jù)將它放入到ArrayList數(shù)組中 (此為三維數(shù)組). */ public static ArrayList readExcel(String filePath) ...{ try ...{ subdata.clear();//將靜態(tài)ArrayList數(shù)組清空.(如果不清空原數(shù)據(jù)會(huì)不斷累加) InputStream is = new FileInputStream(filePath); Workbook rwb = Workbook.getWorkbook(is); // Sheet st = rwb.getSheet(0);//這里有兩種方法獲取sheet表,1為名字,而為下標(biāo),從0開(kāi)始 // Sheet st = rwb.getSheet("Book1");// Excel中第一頁(yè)的頁(yè)名稱. Sheet st[] = rwb.getSheets();// 得到所有Excel中頁(yè)的列表. for (int a = 0; a < st.length; a++) ...{ ArrayList alList = new ArrayList(); ArrayList tablenames = new ArrayList(); ArrayList tableAndContents = new ArrayList(); tablename = st[a].getName().trim(); int b = 0; for (int i = 1; i < st[a].getRows(); i++) ...{ ArrayList al = new ArrayList(); for (int j = 0; j < st[a].getColumns(); j++) ...{ Cell c00 = st[a].getCell(j, i); // 通用的獲取cell值的方式,返回字符串 String strc00 = StringUtil.toISO(c00.getContents().trim()); // 獲得 cell具體類型值的方式得到內(nèi)容. al.add(j, strc00); } alList.add(b, al); b++; } |
tablenames.add(tablename); tableAndContents.add(0, tablenames); tableAndContents.add(1, alList); subdata.add(a, tableAndContents); } rwb.close(); // 關(guān)閉 //System.out.println(subdata);// 輸出 } catch (Exception e) ...{ e.printStackTrace(); } finally ...{ //刪除上傳文件 File file = new File(filePath); boolean result = false; if(file.exists()) ...{ result = file.delete(); } else ...{ System.out.println("文件沒(méi)有找到,無(wú)法刪除!"); } if(result) ...{ System.out.println("刪除成功!"); } else ...{ System.out.println("刪除失敗!"); } } return subdata; } /** *//** * 將讀取的Excel的三維數(shù)組數(shù)據(jù)進(jìn)行對(duì)應(yīng)的數(shù)據(jù)庫(kù)表插入操作. * @author Administrator * @param data:讀取Excel中的數(shù)據(jù)的數(shù)組. * @deprecated:將讀取Excel中的數(shù)據(jù)插入到對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中. */ private static void InsertData(ArrayList data) ...{ try ...{ String tablename; ArrayList Contents = new ArrayList(); for (int i=0; i tablename = ((ArrayList)((ArrayList)data.get(i)).get(0)).get(0).toString(); Contents = (ArrayList)((ArrayList)data.get(i)).get(1); WfdefineDateOperate.currecorde(tablename,Contents); } } catch (Exception e) ...{ e.printStackTrace(); } } /** *//** * 得到文件路徑; * @return filePath */ public String getFilePath() ...{ return filePath; } /** *//** * 設(shè)置文件路徑的位置; * @param filePath */ public void setFilePath(String filePath) ...{ ExcelImportOracle.filePath = filePath; } /** *//** * 將 readExcel方法讀出來(lái)的三維數(shù)組數(shù)據(jù)轉(zhuǎn)換成二維數(shù)組數(shù)據(jù). * @param al * @return 返回二維數(shù)組 數(shù)據(jù). */ public static ArrayList getDisplayData(ArrayList al) ...{ ArrayList result = new ArrayList(); for(int i = 0;i < al.size();i ++) ...{ ArrayList tmp = (ArrayList)((ArrayList)al.get(i)).get(1); for(int j = 0;j < tmp.size();j ++) ...{ result.add(tmp.get(j)); } } return result; } /** *//** * @param args */ public static void main(String[] args) ...{ } } |
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載