最开始使用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(); } } }