当前位置: 代码迷 >> Web前端 >> Excel导出,jxl兑现
  详细解决方案

Excel导出,jxl兑现

热度:126   发布时间:2012-08-22 09:50:35.0
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();
		}
	}
}





  相关解决方案