JXL操作Excel的一些常用对象、方法,数据写入到Excel模版中
package com.zsd.tool;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.CellFormat;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCell;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/**
* JXL 操作Excel
* @author admini
* 注意:JXL只支持xls档案格式,并且不能处理大数据量。
*/
public class ExcelOperationJXL {
/**
* 创建一个excel文件写入操作
* @param args
*/
public static void main(String[] args) {
//创建一个新的Excel
createExcel();
//读取Excel模版,并写入数据
//readExcel();
System.out.println("表格生成!");
}
/**
* 创建一个Excel文件
*/
public static void createExcel(){
File file = new File("F:/2.xls");//生成的表格存储的位置
String [] str = {"id","name","sex"};//标题内容
try {
if(!file.exists()){//判断文件是否存在
file.createNewFile();//创建新的文件
}
//创建工作簿
WritableWorkbook workbook = Workbook.createWorkbook(file);
/*这两个对象只能进行读取操作,不能写入
Workbook work = Workbook.getWorkbook(file);
Sheet s = work.getSheet(0);*/
//创建sheet对象 WritableSheet 可以进行读、写操作
WritableSheet sheet = workbook.createSheet("sheet1", 0);
//给A,B,C列设置不同的宽度;
sheet.setColumnView(0, 10);
sheet.setColumnView(1, 20);
sheet.setColumnView(2, 30);
//设置字体;
WritableFont font1 = new WritableFont(WritableFont.ARIAL,14,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.RED);
WritableCellFormat cellFormat1 = new WritableCellFormat(font1);
//设置背景颜色;
cellFormat1.setBackground(Colour.BLUE_GREY);
//设置边框;
cellFormat1.setBorder(Border.ALL, BorderLineStyle.DASH_DOT);
//设置自动换行;
cellFormat1.setWrap(true);
//设置文字居中对齐方式;
cellFormat1.setAlignment(Alignment.CENTRE);
//设置垂直居中;
cellFormat1.setVerticalAlignment(VerticalAlignment.CENTRE);
//创建单元格
Label label1 = new Label(3, 0, "第一行第一个单元格(测试是否自动换行!)",cellFormat1);
sheet.addCell(label1);
//行对象
Label label = null;
//添加标题
for (int i = 0; i < str.length; i++) {
/**
* Label(i,j,String);
* i:列
* j:行
* String:表示内容
*/
label = new Label(i, 0, str[i]);
sheet.addCell(label);
}
//添加数据
for (int i = 1; i <= 10; i++) {
label = new Label(0, i, i+"");
sheet.addCell(label);
label = new Label(1, i, "My name"+i);
sheet.addCell(label);
label = new Label(2, i, "男");
sheet.addCell(label);
}
workbook.write();//把表格信息写入文件
workbook.close();//关闭
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 根据现有的Excel模版写入数据
*/
public static void readExcel(){
File file = new File("F:/2.xls");//生成的表格存储的位置
try {
if(!file.exists()){//判断文件是否存在
file.createNewFile();//创建新的文件
}
InputStream is = new FileInputStream("F:/3.xls"); //创建一个文件流,读入Excel文件
Workbook wb = Workbook.getWorkbook(is); //将文件流写入到workbook对象
is.close();
//创建工作簿
WritableWorkbook workbook = Workbook.createWorkbook(file,wb);
//创建sheet对象
WritableSheet sheet = workbook.getSheet(0);
//行对象
Label label = null;
//添加数据
for (int i = 1; i <= 10; i++) {
label = new Label(0, i, i+"");
sheet.addCell(label);
label = new Label(1, i, "My name"+i);
sheet.addCell(label);
label = new Label(2, i, "男");
sheet.addCell(label);
}
//表格的第一行,第一列的索引都是 0 开始
//对某一单元格 写入值
label = new Label(0, 14, "测试");
//获取某一单元格的样式,如果单元格没有设置样式,则不需要获取,否则会报 NULL 错误
WritableCell cell =sheet.getWritableCell(0, 14);
CellFormat cf = cell.getCellFormat();
//对要写入的单元格设置样式
label.setCellFormat(cf);
sheet.addCell(label);
workbook.write();//把表格信息写入文件
workbook.close();//关闭
} catch (Exception e) {
e.printStackTrace();
}
}
}