1. 程式人生 > >Java實現Excel表格操作--API:jxl

Java實現Excel表格操作--API:jxl

一、jxl瞭解

  jxl是一個韓國人寫的java操作excel的工具, 在開源世界中,有兩套比較有影響的API可 供使用,一個是POI,一個是jExcelAPI。其中功能相對POI比較弱一點。但jExcelAPI對中文支援非常好,API是純Java的, 並不 依賴Windows系統,即使執行在Linux下,它同樣能夠正確的處理Excel檔案。 另外需要說明的是,這套API對圖形和圖表的支援很有限,而且 僅僅識別PNG格式。

二、jxl.jar獲取

  1、jxl.jar:這裡進行下載

    下載jar包後放入classpath即可

  2、通過maven進行管理的要在pom.xml中引入依賴

<!-- https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl -->
<dependency>
    <groupId>net.sourceforge.jexcelapi</groupId>
    <artifactId>jxl</artifactId>
    <version>2.6.12</version>
</dependency>

三、jxl進行Excel的操作

package com.jxl.excel;

import java.io.File; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; import jxl.write.Number; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableImage; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook;
/** * Excel表格操作 * * @author Administrator * */ public class Utils { public static void main(String[] args) { // createXLS(); readXLS(); } // 建立表格 public static void createXLS() { try { // 開啟檔案 WritableWorkbook book = Workbook.createWorkbook(new File("test.xls")); // 生成名為“第一頁”的工作表,引數0表示這是第一頁 WritableSheet sheet = book.createSheet("first page", 0); // 在Label物件的構造子中指名單元格位置是第一列第一行(0,0)單元格內容為test Label label = new Label(0, 0, "test"); // 將定義好的單元格新增到工作表中 sheet.addCell(label); // 生成一個儲存數字的單元格, Number number = new Number(1, 0, 789); sheet.addCell(number); // 寫入資料並關閉檔案 book.write(); book.close(); } catch (Exception e) { e.printStackTrace(); } } // 讀取Excel public static void readXLS() { try { Workbook book = Workbook.getWorkbook(new File("test.xls")); Sheet sheet = book.getSheet(0); Cell cell = sheet.getCell(0, 0); String result = cell.getContents(); System.out.println(result); book.close(); } catch (Exception e) { e.printStackTrace(); } } // 修改Excel的類,新增一個工作表 public static void updateXLS() { try { Workbook wb = Workbook.getWorkbook(new File("test.xls")); // 開啟一個檔案的副本,並且指定資料寫回到原檔案 WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"), wb); // 新增一個工作表 WritableSheet sheet = book.createSheet("第二頁", 1); sheet.addCell(new Label(0, 0, "第二頁的測試資料")); book.write(); book.close(); } catch (Exception e) { e.printStackTrace(); } } // 操作圖片 public static void addImage() throws Exception { WritableWorkbook wwb = Workbook.createWorkbook(new File("test.xls")); WritableSheet ws = wwb.createSheet("Test Sheet 1", 0); File file = new File("test.png"); WritableImage image = new WritableImage(1, 4, 6, 18, file); ws.addImage(image); wwb.write(); wwb.close(); } // 單元格合併 public static void mergeSheet(WritableWorkbook book, int sheetIndex, int x, int y, int x1, int y1) { WritableSheet sheet = book.getSheet(sheetIndex); try { sheet.mergeCells(x, y, x1, y1);
       // 合併第x列第x行到第x1列第y1行的所有單元格 } catch (Exception e) { e.printStackTrace(); } } // 列寬行高設定 public static void setColView(WritableSheet sheet, int colIndex, int rowIndex, int colW, int rowH) { try { // 將第colIndex列的寬度設為colW sheet.setColumnView(colIndex, colW); // 將第rowIndex行的高度設為rowH sheet.setRowView(rowIndex, rowH); } catch (Exception e) { e.printStackTrace(); } } public static void setFont() { WritableWorkbook book; try { book = Workbook.createWorkbook(new File("test.xls")); WritableFont font1 = new WritableFont(WritableFont.TIMES, 16, WritableFont.BOLD);// 字型為TIMES,字號16,加粗顯示 WritableCellFormat format1 = new WritableCellFormat(font1);
       // 使用了WritableCellFormat類,這個類非常重要,通過它可以指定單元格的各種屬性,後面的單元格格式化中會有更多描述 Label label = new Label(0, 0, "data 4 test", format1);
       // 使用了Label類的構造子,指定了字串被賦予那種格式 // 把水平對齊方式指定為居中 format1.setAlignment(jxl.format.Alignment.CENTRE); // 把垂直對齊方式指定為居中 format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); // 設定自動換行 format1.setWrap(true); } catch (Exception e) { e.printStackTrace(); } } }