在项目中,经常会用到excel文件的导入导出能力,根据实际情况做一下微调整即可用。
1、首选,需要下载 jxl.jar
2、在此,将jar设置到环境变量或引入工程里
3、在接下来就是代码了:
public class ExportExcel {
public static void main(String[] args) throws Exception {
java.util.List<Orgs> list = new java.util.ArrayList();
Orgs ors1 = new Orgs();
ors1.setGpCode("swwww");
ors1.setGpName("wwwww");
list.add(ors1);
Orgs ors2 = new Orgs();
ors2.setGpCode("swww2w");
ors2.setGpName("deeeeee");
list.add(ors2);
//list 里放了两行数据, 同时这里也可以放数组
String[] exceltitle = {"代码","名称"}; //excel列名称
exportExcle(exceltitle, list,"D:\\test\\tests.xls");
}
/*
生成excel 文件
list 数据源
path 文件路径
*/
public static void exportExcle(String[] exceltitle, java.util.List<Orgs> list, String path) throws Exception {
jxl.write.WritableWorkbook book = null;
try {
// 创建一个Excel文件对象
book = jxl.Workbook.createWorkbook(new java.io.File(path));
jxl.write.WritableFont contentFont = new jxl.write.WritableFont(jxl.write.WritableFont.createFont("仿宋"), 12, jxl.write.WritableFont.NO_BOLD);
jxl.write.WritableCellFormat contentFormat = new jxl.write.WritableCellFormat(contentFont);
System.out.println();
// 创建Excel第一个选项卡对象
jxl.write.WritableSheet sheet = book.createSheet("one",0);
if(exceltitle == null || exceltitle.length <=0) return;
//设置表头,第一行内容;Label参数说明:第一个是列,第二个是行,第三个是要写入的数据值,索引值都是从0开始
for(int i=0; i<exceltitle.length; i++){
jxl.write.Label label = new jxl.write.Label(i, 0, exceltitle[i], contentFormat); //第一个参数代表列;第二个代表行
//对应为第x列第y行的数据,比如:第一列第一行即 0,0; 第二列第一行即1,0
sheet.addCell(label); //添加单元格到选项卡中
}
// 遍历集合并添加数据到行,每行对应一个对象
for (int i = 0; i < list.size(); i++) {
Orgs s = (Orgs)list.get(i);
// 表头占据第一行,所以下面行数是索引值+1;// 其他的跟上面添加表头一样添加单元格数据,这里为了方便直接使用链式编程
sheet.addCell(new jxl.write.Label(0, i + 1, s.getGpCode()));
sheet.addCell(new jxl.write.Label(1, i + 1, s.getGpName()));
}
// 写入数据到目标文件
book.write();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭
book.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
class Orgs{
String gpName; //名称
String gpCode; //代码
public String getGpName() {
return gpName;
}
public void setGpName(String gpName) {
this.gpName = gpName;
}
public String getGpCode() {
return gpCode;
}
public void setGpCode(String gpCode) {
this.gpCode = gpCode;
}
}