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獲得:
http://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.6/jexcelapi_2_6_6.zip/download
(包括所有版本):http://sourceforge.net/projects/jexcelapi/files/
直接下載地址(迅雷上新建任務即可):
http://nchc.dl.sourceforge.net/project/jexcelapi/jexcelapi/2.6.6/jexcelapi_2_6_6.zip
一、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) throwsWriteException,IOException{ //建立工作薄 WritableWorkbook workbook = Workbook.createWorkbook(os); //建立新的一頁 WritableSheet sheet = workbook.createSheet("First Sheet",0); //建立要顯示的內容,建立一個單元格,第一個引數為列座標,第二個引數為行座標,第三個引數為內容 Label xuexiao = new Label(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物件
-
相關推薦
Java生成和操作Excel檔案
JAVA EXCEL API:是一開放原始碼專案,通過它Java開發人員可以讀取Excel檔案的內容、建立新的Excel檔案、更新已經存在的Excel檔案。使用該API非Windows作業系統也可以通過純Java應用來處理Excel資料表。因為它是使用Java編寫的,所以我們在Web應用中可以通過
轉帖 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應用中可以通過JSP、
【Java】使用Apache POI生成和解析Excel檔案
概述 Excel是我們平時工作中比較常用的用於儲存二維表資料的,JAVA也可以直接對Excel進行操作,分別有jxl和poi,2種方式。 程式碼 要使用poi,必須引入poi的jar包,maven依賴如下(最新包可參考mvn資訊): <
使用JAVA讀取和寫入EXCEL檔案
首先要下載 poi包和jxl包 讀取部分: import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNot
java使用POI操作excel文件,實現批量導出,和導入
tar.gz spa != nts big 應該 關於 override auth 一、POI的定義 JAVA中操作Excel的有兩種比較主流的工具包: JXL 和 POI 。jxl 只能操作Excel 95, 97, 2000也即以.xls為後綴的excel。而po
java後端匯入excel模板和匯入excel檔案去讀資料
模板轉載地址:https://www.cnblogs.com/zhangyangtao/p/9802948.html 直接上程式碼(我是基於ssm寫的demo,匯入檔案目前只能讀取.xls字尾的excel檔案) 1 <!--匯入的核心依賴--> 2 <depende
Java使用Apache POI操作Excel檔案
這裡有一篇非常細緻的文章,可供需要時候檢視 Apache POI使用詳解 1. 新建Maven專案,引入POI的依賴 <!-- apache POI for xls --&
位元組流與字元流,位元組流和字元流的使用哪個多? java 讀寫操作大檔案 BufferedReader和RandomAccessFile
一 首先我們要知道 在程式中所有的資料都是以流的方式進行傳輸或儲存的 而流有兩種 位元組流用來處理位元組或二進位制物件 字元流主要用來處理字元或字串,一個字元佔兩個位元組 而上一篇的java 讀寫操作大檔案 BufferedReader和RandomAccessFile Buf
java - 操作Excel檔案
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version></depend
java工具類之Excel檔案匯入、讀取資料(支援xls、和xlsx)
所需的jar包:poi的jar包儘量保持一致,不然會報版本不一致的錯誤下面是程式碼:package ReadExcel; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.
JAVA處理Excel檔案---生成簡單的Excel檔案
在現實的辦公中,我們常常會有這樣一個要求:要求把報表直接用excel開啟。在實習中有這樣一個需求。根據所選擇的資源查詢使用者所提供附件的全部資訊並生成excel供下載。但是在查詢的時候我們需要來檢
java使用POI讀取excel檔案,相容xls和xlsx
public List<Double> readExcels(InputStream is)throws Exception{List<Double> xlsxList = new ArrayList<Double>(); try { if(i
Java程式設計中操作XML檔案(生成方法一:DOM)
以DOM方式寫入 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //建立工廠例項 Documen
利用java操作Excel檔案
{ //建立一個工作薄 WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls")); //待插入的工作表 WritableSh
Java圖表繪製和操作excel表格
今天學習了Java中使用JFreeChart,POI,JXL繪製圖表,操作excel表格問題,自己動手了寫了些小demo,不足之處,請大家指正。謝謝。 ^_^ 完整的類檔案在附件中。並附上一張截圖 ====================================
Java程式設計中操作XML檔案(生成方法三:JDOM)
以JDOM方式寫入 Document document = new Document(); //建立Document物件 Element rss = new Element(“rss”
java使用POI實現excel檔案的讀取,相容字尾名xls和xlsx
首先,引入所需的jar包: 如果是maven管理專案的jar包,只需在pom.xml中加上: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency>
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來做一個的二維碼生成器,當然這個例子是比較簡單,若是寫的不好請多多包涵。