在我们平时的工作中,我们经常会遇到读写Excel文档的问题。那么,怎么在java程序中实现读取或者输出一个
Excel文件呢?
我们主要的方式有三种,我只是总结了其中最常用的两种,就是POI和JXL这两种方式来实现。首先我们通过一个图来
了解并对比这两种实现方式。
我会分别总结两种方式基础的用法和结合EasyUI以及Struts2做的一个模板上传下载的案例来总结其用法
今天我为大家展示的是非常基础的JXL读写Excel文件的代码:
1.输出Excel:
package jxi_excel_drdc;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import java.io.File;
import java.io.IOException;
/**
* Created by 28906 on 2016/8/4.
*/
public class JxlExcelWrite {
public static void main(String args[]){
//创建文件
File file = new File("G:/demo.xls");
//创建表头行
String[] titles = {"A","B","C"};
WritableWorkbook wb = null;
try {
file.createNewFile();
//创建工作簿
wb = Workbook.createWorkbook(file);
//创建sheet,第一个参数是名字,第二个是索引
WritableSheet sheet = wb.createSheet("sheet1",0);
//创建表头,第一个参数是列号,第二个是行号,第三个是值
Label label = null;
for(int i=0;i<titles.length;i++){
label = new Label(i,0,titles[i]);
sheet.addCell(label);
}
//往表里写数据,假定写10行数据
for(int i=0;i<10;i++){
label = new Label(0,i,"a"+i);
sheet.addCell(label);
label = new Label(1,i,"b"+i);
sheet.addCell(label);
label = new Label(2,i,"c"+i);
sheet.addCell(label);
}
//写
wb.write();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(wb!=null)
wb.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
我里面的每一条方法都详细注释了得,请对比API看。
生成的Excel文件如图:
对于读取Excel文件的代码如下:
package jxi_excel_drdc;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import java.io.File;
import java.io.IOException;
/**
* Created by huangteng on 2016/8/4.
*/
public class JxlExcelIn {
/**
* JXL解析Excel文件
* @author huangteng
*/
public static void main(String args[]){
Workbook wb = null;
try {
//1.创建工作簿
wb = Workbook.getWorkbook(new File("G:/demo.xls"));
//2.获取sheet
Sheet sheet = wb.getSheet(0);
//3.简单的获取并打印Excel数据
//sheet.getRows() 获取总的行数 sheet.getColumns() 获取一行的列数
for(int i = 0;i<sheet.getRows();i++){
for(int j=0;j<sheet.getColumns();j++){
Cell cell = sheet.getCell(j,i);//获取每一个单元格,参数是行和列坐标
System.out.print(cell.getContents()+" ");
}
System.out.println();//隔行
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(wb!=null){
wb.close();
}
}
}
}
run之后的结果如下:
好的,其实非常简单,只是对API熟悉一下,让大家了解一下用法.
跟着会写POI实现的方法,后边给大家分享一个复杂点的demo,是我们在项目中遇到的。