java 生成和操作Excel
JAVA EXCEL API:是一開放原始碼專案,通過它Java開發人員可以讀取Excel檔案的內容、建立新的Excel檔案、更新已經存在的Excel檔案。使用該API非Windows作業系統也可以通過純Java應用來處理Excel資料表。因為它是使用Java編寫的,所以我們在Web應用中可以通過JSP、Servlet來呼叫API實現對Excel資料表的訪問。
下載:
官方網站 http://www.andykhan.com/jexcelapi/ 下載最新版本(本人下的是jexcelapi_2_6_12.tar.gz,解壓後將裡面的jxl.jar複製到WEB-INF/lib目錄下面即可)
Java Excel API的jar包可以通過以下URL獲得:
直接下載地址(迅雷上新建任務即可):
一、JSP生成簡單的Excel檔案
package beans.excel; import java.io.IOException; import java.io.OutputStream; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; public class SimpleExcelWrite {public void createExcel(OutputStream os) throws WriteException,IOException{ //建立工作薄 WritableWorkbook workbook = Workbook.createWorkbook(os); //建立新的一頁 WritableSheet sheet = workbook.createSheet("First Sheet",0); //建立要顯示的內容,建立一個單元格,第一個引數為列座標,第二個引數為行座標,第三個引數為內容 Label xuexiao = newLabel(0,0,"學校"); sheet.addCell(xuexiao); Label zhuanye = new Label(1,0,"專業"); sheet.addCell(zhuanye); Label jingzhengli = new Label(2,0,"專業競爭力"); sheet.addCell(jingzhengli); Label qinghua = new Label(0,1,"清華大學"); sheet.addCell(qinghua); Label jisuanji = new Label(1,1,"計算機專業"); sheet.addCell(jisuanji); Label gao = new Label(2,1,"高"); sheet.addCell(gao); Label beida = new Label(0,2,"北京大學"); sheet.addCell(beida); Label falv = new Label(1,2,"法律專業"); sheet.addCell(falv); Label zhong = new Label(2,2,"中"); sheet.addCell(zhong); Label ligong = new Label(0,3,"北京理工大學"); sheet.addCell(ligong); Label hangkong = new Label(1,3,"航空專業"); sheet.addCell(hangkong); Label di = new Label(2,3,"低"); sheet.addCell(di); //把建立的內容寫入到輸出流中,並關閉輸出流 workbook.write(); workbook.close(); os.close(); } }
SimpleExcelWrite.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@ page import="java.io.*" %> <%@ page import="beans.excel.*" %> <% String fname = "學校競爭力情況"; OutputStream os = response.getOutputStream();//取得輸出流 response.reset();//清空輸出流 //下面是對中文檔名的處理 response.setCharacterEncoding("UTF-8");//設定相應內容的編碼格式 fname = java.net.URLEncoder.encode(fname,"UTF-8"); response.setHeader("Content-Disposition","attachment;filename="+new String(fname.getBytes("UTF-8"),"GBK")+".xls"); response.setContentType("application/msexcel");//定義輸出型別 SimpleExcelWrite sw = new SimpleExcelWrite(); sw.createExcel(os); %> <html> <head> <title></title> </head> <body> </body> </html>
二、生成複雜資料格式Excel檔案
package beans.excel; import java.io.IOException; import java.io.OutputStream; import java.util.Calendar; import java.util.Date; import jxl.Workbook; import jxl.write.Boolean; import jxl.write.DateFormats; import jxl.write.DateTime; import jxl.write.Label; import jxl.write.Number; import jxl.write.WritableCellFormat; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; public class ComplexDataExcelWrite { public void createExcel(OutputStream os) throws WriteException,IOException { //建立工作薄 WritableWorkbook workbook = Workbook.createWorkbook(os); //建立新的一頁 WritableSheet sheet = workbook.createSheet("First Sheet", 0); //建立要顯示的具體內容 Label formate = new Label(0,0,"資料格式"); sheet.addCell(formate); Label floats = new Label(1,0,"浮點型"); sheet.addCell(floats); Label integers = new Label(2,0,"整型"); sheet.addCell(integers); Label booleans = new Label(3,0,"布林型"); sheet.addCell(booleans); Label dates = new Label(4,0,"日期格式"); sheet.addCell(dates); Label example = new Label(0,1,"資料示例"); sheet.addCell(example); //浮點資料 Number number = new Number(1,1,3.1415926535); sheet.addCell(number); //整形資料 Number ints = new Number(2,1,15042699); sheet.addCell(ints); Boolean bools = new Boolean(3,1,true); sheet.addCell(bools); //日期型資料 Calendar c = Calendar.getInstance(); Date date = c.getTime(); WritableCellFormat cf1 = new WritableCellFormat(DateFormats.FORMAT1); DateTime dt = new DateTime(4,1,date,cf1); sheet.addCell(dt); //把建立的內容寫入到輸出流中,並關閉輸出流 workbook.write(); workbook.close(); os.close(); } }
三、生成複雜佈局和樣式的Excel檔案
package beans.excel; import java.io.IOException; import java.io.OutputStream; import java.util.Calendar; import java.util.Date; import jxl.Workbook; import jxl.format.Colour; import jxl.format.UnderlineStyle; import jxl.write.Boolean; import jxl.write.DateFormats; import jxl.write.DateTime; import jxl.write.Label; import jxl.write.Number; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; public class MutiStyleExcelWrite { public void createExcel(OutputStream os) throws WriteException,IOException { //建立工作薄 WritableWorkbook workbook = Workbook.createWorkbook(os); //建立新的一頁 WritableSheet sheet = workbook.createSheet("First Sheet", 0); //構造表頭 sheet.mergeCells(0, 0, 4, 0);//新增合併單元格,第一個引數是起始列,第二個引數是起始行,第三個引數是終止列,第四個引數是終止行 WritableFont bold = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//設定字型種類和黑體顯示,字型為Arial,字號大小為10,採用黑體顯示 WritableCellFormat titleFormate = new WritableCellFormat(bold);//生成一個單元格樣式控制物件 titleFormate.setAlignment(jxl.format.Alignment.CENTRE);//單元格中的內容水平方向居中 titleFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//單元格的內容垂直方向居中 Label title = new Label(0,0,"JExcelApi支援資料型別詳細說明",titleFormate); sheet.setRowView(0, 600, false);//設定第一行的高度 sheet.addCell(title); //建立要顯示的具體內容 WritableFont color = new WritableFont(WritableFont.ARIAL);//選擇字型 color.setColour(Colour.GOLD);//設定字型顏色為金黃色 WritableCellFormat colorFormat = new WritableCellFormat(color); Label formate = new Label(0,1,"資料格式",colorFormat); sheet.addCell(formate); Label floats = new Label(1,1,"浮點型"); sheet.addCell(floats); Label integers = new Label(2,1,"整型"); sheet.addCell(integers); Label booleans = new Label(3,1,"布林型"); sheet.addCell(booleans); Label dates = new Label(4,1,"日期格式"); sheet.addCell(dates); Label example = new Label(0,2,"資料示例",colorFormat); sheet.addCell(example); //浮點資料 //設定下劃線 WritableFont underline= new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.NO_BOLD,false,UnderlineStyle.SINGLE); WritableCellFormat greyBackground = new WritableCellFormat(underline); greyBackground.setBackground(Colour.GRAY_25);//設定背景顏色為灰色 Number number = new Number(1,2,3.1415926535,greyBackground); sheet.addCell(number); //整形資料 WritableFont boldNumber = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//黑體 WritableCellFormat boldNumberFormate = new WritableCellFormat(boldNumber); Number ints = new Number(2,2,15042699,boldNumberFormate); sheet.addCell(ints); //布林型資料 Boolean bools = new Boolean(3,2,true); sheet.addCell(bools); //日期型資料 //設定黑體和下劃線 WritableFont boldDate = new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.BOLD,false,UnderlineStyle.SINGLE); WritableCellFormat boldDateFormate = new WritableCellFormat(boldDate,DateFormats.FORMAT1); Calendar c = Calendar.getInstance(); Date date = c.getTime(); DateTime dt = new DateTime(4,2,date,boldDateFormate); sheet.addCell(dt); //把建立的內容寫入到輸出流中,並關閉輸出流 workbook.write(); workbook.close(); os.close(); } }
四、JSP讀取Excel報表
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@ page import="java.io.File" %> <%@ page import="jxl.Cell" %> <%@ page import="jxl.Sheet" %> <%@ page import="jxl.Workbook" %> <html> <head> <title></title> </head> <body> <font size="2"> <% String fileName = "D:/學校競爭力情況.xls"; File file = new File(fileName);//根據檔名建立一個檔案物件 Workbook wb = Workbook.getWorkbook(file);//從檔案流中取得Excel工作區物件 Sheet sheet = wb.getSheet(0);//從工作區中取得頁,取得這個物件的時候既可以用名稱來獲得,也可以用序號。 String outPut = ""; outPut = outPut + "<b>" + fileName + "</b><br>"; outPut = outPut + "第一個sheet的名稱為:" + sheet.getName() + "<br>"; outPut = outPut + "第一個sheet共有:" + sheet.getRows() + "行" + sheet.getColumns() + "列<br>"; outPut = outPut + "具體內容如下:<br>"; for(int i=0; i < sheet.getRows(); i++){ for(int j=0; j < sheet.getColumns(); j++){ Cell cell = sheet.getCell(j,i); outPut = outPut + cell.getContents() + " "; } outPut = outPut + "<br>"; } out.println(outPut); %> </font> </body> </html>
示例1:讀取本地Excel檔案F:\紅樓人物.xls
1. 新建Excel檔案F:\紅樓人物.xls
內容如下:
2. Java通過jexcelapi包操作excel檔案:
- //in ExcelOperater
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.InputStream;
- import jxl.Cell;
- import jxl.CellType;
- import jxl.Sheet;
- import jxl.Workbook;
- import jxl.write.Label;
- public class ExcelOperater
- {
- public static void main(String[] args)
- {
- jxl.Workbook readwb = null;
- try
- {
- //構建Workbook物件, 只讀Workbook物件
- //直接從本地檔案建立Workbook
- InputStream instream = new FileInputStream("F:/紅樓人物.xls");
- readwb = Workbook.getWorkbook(instream);
- //Sheet的下標是從0開始
- //獲取第一張Sheet表
- Sheet readsheet = readwb.getSheet(0);
- //獲取Sheet表中所包含的總列數
- int rsColumns = readsheet.getColumns();
- //獲取Sheet表中所包含的總行數
- int rsRows = readsheet.getRows();
- //獲取指定單元格的物件引用
- for (int i = 0; i < rsRows; i++)
- {
- for (int j = 0; j < rsColumns; j++)
- {
- Cell cell = readsheet.getCell(j, i);
- System.out.print(cell.getContents() + " ");
- }
- System.out.println();
- }
- //利用已經建立的Excel工作薄,建立新的可寫入的Excel工作薄
- jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(
- "F:/紅樓人物1.xls"), readwb);
- //讀取第一張工作表
- jxl.write.WritableSheet ws = wwb.getSheet(0);
- //獲得第一個單元格物件
- jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
- //判斷單元格的型別, 做出相應的轉化
- if (wc.getType() == CellType.LABEL)
- {
- Label l = (Label) wc;
- l.setString("新姓名");
- }
- //寫入Excel物件
- wwb.write();
- wwb.close();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- readwb.close();
- }
- }
- }
3. 結果:
① 控制檯輸出:
人物 等級 大觀園位置 金陵十二釵
林黛玉 小姐 瀟湘館 正冊
妙玉 世外 櫳翠庵 正冊
晴雯 丫鬟 怡紅院 副冊
香菱 妾 蘅蕪苑 又副冊
② 建立檔案F:\紅樓人物1.xls
4. 程式解析:
所引用的包:
① Workbook物件,需要jxl.Workbook包;
② InputStream、FileInputStream物件:需要java.io.FileInputStream和java.io.InputStream包。
③ Sheet物件:jxl.Sheet包;注意excel中sheet表單的行列從0開始計數。
④ Cell物件:jxl.Cell包;對單元進行處理
⑤ Label:選擇jxl.write.label包
⑥ WritableWorkbook、WritableSheet、WritableCelll物件
例項二:3個功能-----從excel檔案F:\紅樓人物.xls讀取資料;生成新的excel檔案F:\紅樓人物2.xls;修改原excel一個單元並輸出為F:\紅樓人物3.xls。
原始檔案:F:\紅樓人物.xls
執行結果:
① 控制檯輸出:
人物 等級 大觀園位置 金陵十二釵
林黛玉 小姐 瀟湘館 正冊
妙玉 世外 櫳翠庵 正冊
晴雯 丫鬟 怡紅院 副冊
香菱 妾 蘅蕪苑 又副冊
② 寫入輸出Excel檔案:F:\紅樓人物2.xls
③ 修改輸出檔案 F:\紅樓人物3.xls (加修飾後輸出)
示例程式:
- //in ExcelHandle
- import jxl.*;
- import jxl.format.UnderlineStyle;
- import jxl.write.*;
- import jxl.write.Number;
- import jxl.write.Boolean;
- import jxl.Cell;
- import java.io.*;
-
相關推薦
轉帖 Java生成和操作Excel文件
head instance AC 單元格 content 類型 eid 網站 hang JAVA EXCEL API:是一開放源碼項目,通過它Java開發人員可以讀取Excel文件的內容、創建新的Excel文件、更新已經存在的Excel文件。使用該API非Windows操作
Java生成和操作Excel檔案
JAVA EXCEL API:是一開放原始碼專案,通過它Java開發人員可以讀取Excel檔案的內容、建立新的Excel檔案、更新已經存在的Excel檔案。使用該API非Windows作業系統也可以通過純Java應用來處理Excel資料表。因為它是使用Java編寫的,所以我們在Web應用中可以通過
java 生成和操作Excel
JAVA EXCEL API:是一開放原始碼專案,通過它Java開發人員可以讀取Excel檔案的內容、建立新的Excel檔案、更新已經存在的Excel檔案。使用該API非Windows作業系統也可以通過純Java應用來處理Excel資料表。因為它是使用Java編寫的,所以我們在Web應用中可以通過JSP、
java使用POI操作excel文件,實現批量導出,和導入
tar.gz spa != nts big 應該 關於 override auth 一、POI的定義 JAVA中操作Excel的有兩種比較主流的工具包: JXL 和 POI 。jxl 只能操作Excel 95, 97, 2000也即以.xls為後綴的excel。而po
【Java】使用Apache POI生成和解析Excel檔案
概述 Excel是我們平時工作中比較常用的用於儲存二維表資料的,JAVA也可以直接對Excel進行操作,分別有jxl和poi,2種方式。 程式碼 要使用poi,必須引入poi的jar包,maven依賴如下(最新包可參考mvn資訊): <
Java圖表繪製和操作excel表格
今天學習了Java中使用JFreeChart,POI,JXL繪製圖表,操作excel表格問題,自己動手了寫了些小demo,不足之處,請大家指正。謝謝。 ^_^ 完整的類檔案在附件中。並附上一張截圖 ====================================
java 生成和解析xml
img use public set odin 實現 etag system Coding 本文主要使用的是Jdom.jar包(包的下載百度一下)實現了生成xml文件和解析xml文件 下面是生成xml的實現 說明:stuLists集合是一個存放著Student對象的集合
java生成和解析二維碼
ade ted image def eat tro per buffer could 前言 現在,二維碼的應用已經非常廣泛,在線生成器也是諸多,隨手生成。 所以就和大家分享一個小案例,用zxing來做一個的二維碼生成器,當然這個例子是比較簡單,若是寫的不好請多多包涵。
R: factor & list 生成和操作因子、列表
shu p s 類型 問題 rac 方便 left 函數 nba ################################################### 問題:生成、操作列表 & 因子 18.4.27 怎麽生成列表 list、因
python使用xlsxwriter模塊生成和處理Excel文檔
xlsxwriterxlsxwriter使用實例--網站業務流量報表安裝模塊wget https://files.pythonhosted.org/packages/04/c9/d5a8b02561a32bfcbec767a7d094c1ce54874eba9bc6bbaa58dd9ad523e7/XlsxW
Java使用easyExcel操作Excel案例
這兩天一直在玩些小工具,今天整了下阿里巴巴的easyExcel,下面是案例: import com.alibaba.excel.ExcelReader; import com.alibaba.excel.ExcelWriter; import com.alibaba.e
Java連線和操作資料庫
JDBC 1、JDBC是開發資料庫引用的java API,通過JDBC,使用Java設計的程式能夠執行SQL語言、獲取結果、在使用者介面中顯示資料,並且能將所做的改動傳回資料庫,同時JDBC API可用於分散式異型機環境中國多種資料來源之間的互動; 2、一般使用Jav
Java讀取和解析Excel資料:基於Apache POI(二)
Java讀取和解析Excel資料:基於Apache POI(二) 假設附錄1文章中的test.xls是對員工的考勤記錄表。需要根據這張excel表統計員工的加班時間,那麼需要重點關注第五列的下班時候的打卡記錄時間。我寫一個Java程式,根據附錄1中那樣的excel表中的下班打卡時間統計員工在
java之poi操作excel-批量匯入匯出
上一篇博文介紹了poi操作excel的基本讀寫操作後,接下來,介紹一下在專案中的實際用途:批量匯入、批量匯出功能。因為重點知識介紹批量匯入匯出excel功能,故而專案整體的搭建後臺用jdbc與struts2,前端頁面用jquery-easyui實現(其實也可以整合到s
《MFC如何新增EXCEL庫和操作EXCEL》
EXCEL工作簿、工作表、單元格、行、列 我們在使用EXCEL時,需要搞清楚EXCEL應用程式、工作簿、工作表以及單元格的關係,還有如何設定字型和背景以及邊框的屬性。總之,就是1個工作簿(workbook)中含有很多個工作表(worksheet),工作表(worksheet)由行(cols)
php使用phpexcel開發庫生成和讀取excel
excel的生成和讀取在日常開發中用的很多,最基本的操作就是把資料庫裡的資料匯出為excel或者讀取excel的資料並插入到資料庫,這兩種需求是比較常見的。像java,C#可以使用POI開發庫,php中也給我們提供了這樣的第三方開發庫phpexcel,這樣php也能生成和讀
使用JAVA讀取和寫入EXCEL檔案
首先要下載 poi包和jxl包 讀取部分: import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNot
java匯入和匯出excel文件(支援xls,xlsx格式)
好久沒寫部落格了,寫個簡單的估計也是常用的,歡迎評判指導交流 相關jar包,可以先百度,因為時間問題後續再補上 package main.java; import java.io.File; import java.io.FileInputStream; import
Java使用POI操作Excel並建立下拉框
java建立 package poiexcel; import java.io.FileOutputStream; import java.util.Date; import org
Java 使用POI操作EXCEL及測試框架搭建、測試開發的一些想法
無論是UI自動化測試還是介面自動化測試都需要進行資料驅動,一般很常見的一種方式就是用excel來管理資料,那麼就涉及到一些程式碼對EXCEL的操作,之前我們介紹過用CSV來處理EXCEL,但是它的功能還不夠強大。比如介面自動化測試框架搭建的時候我們用excel來進行資料驅動,