轉帖|其它|編輯:郝浩|2010-06-22 11:38:57.000|閱讀 1147 次
概述:在Web應用日益盛行的今天,通過Web來操作Excel文件的需求越來越強烈,目前較為流行的操作是在JSP或 Servlet 中創建一個CSV (comma separated values)文件,并將這個文件以MIME,text/csv類型返回給瀏覽器,接著瀏覽器調用Excel并且顯示CSV文件。這樣只是說可以訪問到 Excel文件,但是還不能真正的操縱Excel文件,本文將給大家一個驚喜,向大家介紹一個開放源碼項目Java Excel API。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
JAVA EXCEL API簡介
Java Excel是一開放源碼項目,通過它Java開發人員可以讀取Excel文件的內容、創建新的Excel文件、更新已經存在的Excel文件。使用該 API非Windows操作系統也可以通過純Java應用來處理Excel數據表。因為是使用Java編寫的,所以我們在Web應用中可以通過JSP、 Servlet來調用API實現對Excel數據表的訪問。
Java Excel API 文檔
1.應用示例:
如何從Excel讀取數據:
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數據導入到 oracle數據庫類. * * Copyright: Copyright (c) 2004 * Company: 易通技術有限公司 * @author Allen * @version 1.0 */ public class ExcelImportOracle ...{ /** *//** * 用于返 回三維數組的ArrayList. */ private static ArrayList subdata = new ArrayList(); /** *//** * Excel中的表名. */ private static String tablename; /** *//** * 文件的路徑 */ private static String filePath; /** *//** * 該方法為完成讀取Excel中的數據并將數據插入到對應的數據庫表中的操作(在調用前需要先調用 setFilePath(String)這個方法.). * @author Administrator * @param data:讀取Excel中的數據的數組. * @deprecated:將讀取Excel中的數據插入到對應的數據庫表 中. * */ public static void ExcelDataImportOracle(String filePath) throws Exception ...{ try ...{ ArrayList al = readExcel(filePath); InsertData(al); } catch (Exception e) ...{ e.printStackTrace(); } } /** *//** * 讀取Excel中的數 據.將這些數據放入到一個三維數組中. * @author Administrator * @param filePath 文件路徑. * @deprecated:讀取Excel中的數據將它放入到ArrayList數組中 (此為三維數組). */ public static ArrayList readExcel(String filePath) ...{ try ...{ subdata.clear();//將靜態ArrayList數組清空.(如果不清空原數據會不斷累加) InputStream is = new FileInputStream(filePath); Workbook rwb = Workbook.getWorkbook(is); // Sheet st = rwb.getSheet(0);//這里有兩種方法獲取sheet表,1為名字,而為下標,從0開始 // Sheet st = rwb.getSheet("Book1");// Excel中第一頁的頁名稱. Sheet st[] = rwb.getSheets();// 得到所有Excel中頁的列表. 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具體類型值的方式得到內容. 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(); // 關閉 //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("文件沒有找到,無法刪除!"); } if(result) ...{ System.out.println("刪除成功!"); } else ...{ System.out.println("刪除失敗!"); } } return subdata; } /** *//** * 將讀取的Excel的三維數組數據進行對應的數據庫表插入操作. * @author Administrator * @param data:讀取Excel中的數據的數組. * @deprecated:將讀取Excel中的數據插入到對應的數據庫表中. */ 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; } /** *//** * 設置文件路徑的位置; * @param filePath */ public void setFilePath(String filePath) ...{ ExcelImportOracle.filePath = filePath; } /** *//** * 將 readExcel方法讀出來的三維數組數據轉換成二維數組數據. * @param al * @return 返回二維數組 數據. */ 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) ...{ } } |
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉載自:網絡轉載