Excel导出,jxl实现

1.导出一般可以用poi包和jxl
最开始使用poi,发现导出的数据是乱码,poi2.5以上就没有设置编码的属性,但是使用poi2.5导出还是乱码,不知道是不是由于我的office2007的缘故,网上说poi3.5才兼容office2007.没办法,索性就换jxl来实现咯。

2.下边有jxl包和poi3.6的包

下边是我的一个例子,poi的实现方法,等以后找出问题在贴出来


import java.io.File;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

/**
*
* @author 赵永恩
*
*/
public class ExcelReport {

/**
* @param args
*/
public static void main(String[] args) {
try {
// 打开文件
WritableWorkbook book = Workbook.createWorkbook(new File("c:/yyyyMMddHHmmss.xls"));
// 生成名为“第一页”的工作表,参数0表示这是第一页
WritableSheet sheet = book.createSheet("统计", 0);

/*
* 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123
*/
// jxl.write.Number number = new jxl.write.Number(1, 0, 789.123);
// sheet.addCell(number);

/********************************public*****************************/
WritableFont font= new WritableFont(WritableFont.createFont("宋体"),16,WritableFont.BOLD);
WritableCellFormat cellFormat = new WritableCellFormat(font);
cellFormat.setAlignment(jxl.format.Alignment.CENTRE);//设置文本对其方式,左对齐还是右对齐
jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat(cellFormat);

WritableFont font1= new WritableFont(WritableFont.createFont("宋体"),14);
WritableCellFormat cellFormat1 = new WritableCellFormat(font1);
jxl.write.WritableCellFormat wcf1 = new jxl.write.WritableCellFormat(cellFormat1);

WritableFont font2= new WritableFont(WritableFont.createFont("宋体"),10);
WritableCellFormat cellFormat2 = new WritableCellFormat(font2);
cellFormat2.setAlignment(jxl.format.Alignment.CENTRE);//设置文本对其方式,左对齐还是右对齐
jxl.write.WritableCellFormat wcf2 = new jxl.write.WritableCellFormat(cellFormat2);
/********************************public*****************************/

sheet.setRowView(0, 800); // 设置行的高度
sheet.setRowView(1, 600);
sheet.setRowView(2, 400);
sheet.setRowView(3, 600);
sheet.setColumnView(1, 10); // 设置列的宽度

// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
sheet.addCell(new Label(0, 0, "统计表", wcf)); // 合并单元格
sheet.mergeCells(0, 0, 6, 0); // 合并单元格



sheet.addCell(new Label(0, 1, "填报单位:XXX",wcf1));
sheet.mergeCells(0, 1, 6, 1); // 合并单元格


sheet.addCell(new Label(0, 2, "县名",wcf2));
sheet.mergeCells(0, 2, 0, 3); // 合并单元格

sheet.addCell(new Label(1, 2, "房屋损毁",wcf2));
sheet.mergeCells(1, 2, 2, 2); // 合并单元格
sheet.addCell(new Label(1, 3, "损坏(间)",wcf2));
sheet.addCell(new Label(2, 3, "倒塌(间)",wcf2));

sheet.addCell(new Label(3, 2, "农业受灾",wcf2));
sheet.mergeCells(3, 2, 6, 2); // 合并单元格
sheet.addCell(new Label(3, 3, "受灾(公顷)",wcf2));
sheet.addCell(new Label(4, 3, "成灾(公顷)",wcf2));
sheet.addCell(new Label(5, 3, "绝收(公顷)",wcf2));
sheet.addCell(new Label(6, 3, "损失现粮(万吨)",wcf2));

int i=0;
for(i=0;i<10;i++){
//这是循环出你的值
sheet.addCell(new Label(0, i+4, "value_"+i,wcf2));
sheet.addCell(new Label(1, i+4, i+"",wcf2));
sheet.addCell(new Label(2, i+4, i+"",wcf2));
}

sheet.addCell(new Label(0, i+4, "合计"+i,wcf2));

// 写入数据并关闭文件
book.write();
book.close();
} catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值