日期:2014-05-20  浏览次数:20785 次

poi导出excel
现在我用poi导出excel,遇到如下问题,下载后打开这个excel文件,说“您尝试打开的文件XX。xls的格式与文件扩展名指定的格式不一致。打开文件前请验证文件没有损坏且来源可信。。”这是什么地方报错?还是我生成excel的时候?
先贴段我生成excel的代码:望各位大侠帮忙!困扰半天了。急!
package com.reportforms.sys.util.export;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * 生成导出Excel文件对象
 * 
 * 
 * 
 */

public class XLSExport {

// 设置cell编码解决中文高位字节截断
private static short XLS_ENCODING = HSSFCell.ENCODING_UTF_16;

// // 定制日期格式
// private static String DATE_FORMAT = " mm/dd/yy "; // "m/d/yy h:mm"

// 定制浮点数格式
private static String NUMBER_FORMAT = " #,##0.00 ";

private String xlsFileName;

private HSSFWorkbook workbook;

private HSSFSheet sheet;

private HSSFRow row;

/**
* 初始化Excel

* @param fileName
* 导出文件名
*/
public XLSExport(String fileName) {
this.xlsFileName = fileName;
this.workbook = new HSSFWorkbook();
this.sheet = workbook.createSheet();
}

/**
* 导出Excel文件

* @throws XLSException
*/
public void exportXLS() {
try {
FileOutputStream fOut = new FileOutputStream(xlsFileName);
workbook.write(fOut);
fOut.flush();
fOut.close();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}

}

/**
* 增加一行

* @param index
* 行号
*/
public void createRow(int index) {
this.row = this.sheet.createRow(index);
}

/**
* 设置单元格

* @param index
* 列号
* @param value
* 单元格填充值
*/
public void setCell(int index, String value) {
HSSFCell cell = this.row.createCell(index);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellType(XLS_ENCODING);
cell.setCellValue(value);
}

/**
* 设置单元格

* @param index
* 列号
* @param value
* 单元格填充值
*/
public void setCell(int index, Calendar value) {
HSSFCell cell = this.row.createCell(index);
cell.setCellType(XLS_ENCODING);
cell.setCellValue(value.getTime());
HSSFCellStyle cellStyle = workbook.createCellStyle(); // 建立新的cell样式 
// cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(DATE_FORMAT)); // 设置cell样式为定制的日期格式 
cell.setCellStyle(cellStyle); // 设置该cell日期的显示格式 
}

/**
* 设置单元格

* @param index
* 列号
* @param value
* 单元格填充值
*/
public void setCell(int index, int value) {
HSSFCell cell = this.row.createCell( index);
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
cell.setCellValue(value);
}

/**
* 设置单元格

* @param index
* 列号
* @param value
* 单元格填充值
*/
public void setCell(int index, double value) {
HSSFCell cell = this.row.createCell( index);
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
cell.setCellValue(value);
HSSFCellStyle cellStyle = workbook.createCellStyle(); //建立新的cell样式 
HSSFDataFormat format = workbook.createDataFormat();
cellStyle.setDataFormat(format.getFormat(NUMBER_FORMAT)); //设置cell样式为定制的浮点数格式 
cell.setCellStyle(cellStyle); // 设置该cell浮点数的显示格式