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(); } } }

       

猜你喜欢

转载自www.cnblogs.com/null-/p/10028390.html