感觉现在poi用的比jxl较多,jxl相对过时,本人在操作过程中,发现jxl不能操作doc文件,以及只适用于版本比较低的excel,郁闷。虽然没有比对jxl和poi的性能,但是对于现在的计算机性能,感觉也差不了多少(说话很不负责任)。后期要考虑转入poi阵营
转载了一篇关于pio和jxl的性能对比博客:
http://blog.youkuaiyun.com/Demodan/article/details/78774621
下面给出的是关于jxl的简单操作:
package com.zd.excel.demo;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.CellFormat;
import jxl.read.biff.BiffException;
import jxl.write.*;
import java.io.*;
/**
* 表格工具类
* 1.创建excel表
* 2.读取excel表
*
* Created by ZD on 2017/12/11.
*/
public class ExcelUtils {
/**
* 读取文档内容,将其写入excel表格中
* 行读取
*/
public static void writeExcel(File file) throws IOException, WriteException {
//1,创建workbook
WritableWorkbook workbook = Workbook.createWorkbook(new File("test.xls"));
//2. 创建sheet
WritableSheet sheet = workbook.createSheet("全国地区代码",0);
//3. 设置表标题字体大小
WritableFont writableFont = new WritableFont(WritableFont.ARIAL,20,WritableFont.BOLD);
//4. 设置表标题单元格格式
CellFormat cellFormat = new WritableCellFormat(writableFont);
//5.创建label,用于存放标题
Label header = new Label(0,0,"全国地区代码",cellFormat);
sheet.addCell(header);
//6.创建表头
Label id = new Label(0,1,"编号",cellFormat);
sheet.addCell(id);
Label code = new Label(1,1,"代码",cellFormat);
sheet.addCell(code);
Label name = new Label(2,1,"名称",cellFormat);
sheet.addCell(name);
//7.读取文件,写入表格
// File file = new File("test.txt");
if (!file.exists())
return;
//乱码问题
InputStream inputStream = new FileInputStream(file);
InputStreamReader fileReader = new InputStreamReader(inputStream,"GBK");
// FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
Label label = null;
//如果输入流读取到文档文本行
for (int i = 1; (line = bufferedReader.readLine())!=null; i++){
line = line.trim();
//拆分字符串,如果读取的行中不包含有数值格式,则返回本次循环
if (!line.matches("^[0-9].*")) {
//结束本次循环
i--;
continue;
}
//拆分字符串-地区代码
String icode = line.substring(0,4);
//拆分字符串-地区名称
String[] names = line.split("[0-9]*");
StringBuilder iname = new StringBuilder();
for (int z = 0; z < names.length; z++){
if (names[z].equals("")||names[z].equals("\t"))
continue;
iname.append(names[z]);
}
//加入编号
label = new Label(0,i+1,i+"");
sheet.addCell(label);
//加入地区代码
label = new Label(1,i+1,icode.toString());
sheet.addCell(label);
//加入地区名称
label = new Label(2,i+1,iname.toString());
sheet.addCell(label);
}
workbook.write();
bufferedReader.close();
fileReader.close();
workbook.close();
}
/**
* 从excel表中读取信息,将其写入txt中
* @param file
* @throws IOException
* @throws BiffException
*/
private static void readExcel(File file) throws IOException, BiffException {
//1.创建workbook
Workbook workbook = Workbook.getWorkbook(file);
//2.获取sheet
Sheet sheet = workbook.getSheet(0);
//3.获取所有行数
int rows = sheet.getRows();
//4.一行对应的所有单元格
Cell[] cells = null;
File writeFile = new File("write.txt");
if (!writeFile.exists())
writeFile.createNewFile();
FileWriter fileWriter = new FileWriter(writeFile);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
for (int i = 0; i < rows; i++){
cells = sheet.getRow(i);
for (Cell cell:cells){
bufferedWriter.write(cell.getContents());
bufferedWriter.write(" ");
}
bufferedWriter.newLine();
}
bufferedWriter.flush();
fileWriter.flush();
bufferedWriter.close();
fileWriter.close();
workbook.close();
}
public static void main(String[] args) throws IOException, WriteException, BiffException {
System.out.println("1.读取txt文件创建excel表:");
File file = new File("test.txt");
writeExcel(file);
System.out.println("2.读取excel表格内容:");
File excel = new File("test.xls");
readExcel(excel);
}
}