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