poi导出excel 损坏_poi导出excel解决方法

当前位置:我的异常网» J2EE » poi导出excel解决方法

poi导出excel解决方法

www.myexceptions.net  网友分享于:2013-01-13  浏览:688次

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浮点数的显示格式

文章评论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!关于您的问题,可以通过POI导出Excel时设置单元格公式来实现自动求和。具体实现方法如下: 1. 在写入Excel时,设置需要求和的单元格格式为数值格式。 2. 在需要求和的单元格后面插入一个新的单元格,用来存放公式。 3. 在公式单元格中设置SUM函数,例如SUM(C2:C10),表示求C2到C10单元格的和。 4. 最后,在写入Excel完成后,调用workbook对象的recalculateFormulas()方法,会自动计算公式单元格的值。 下面是一个简单的Java代码示例: ``` // 创建Workbook对象 Workbook workbook = new HSSFWorkbook(); // 创建Sheet对象 Sheet sheet = workbook.createSheet("Sheet1"); // 创建第一行 Row row1 = sheet.createRow(0); // 创建单元格格式 CellStyle cellStyle = workbook.createCellStyle(); cellStyle.setDataFormat(workbook.createDataFormat().getFormat("#,##0.00")); // 写入数值单元格 Cell cell1 = row1.createCell(0); cell1.setCellValue(1000); cell1.setCellStyle(cellStyle); // 写入数值单元格 Cell cell2 = row1.createCell(1); cell2.setCellValue(2000); cell2.setCellStyle(cellStyle); // 写入数值单元格 Cell cell3 = row1.createCell(2); cell3.setCellValue(3000); cell3.setCellStyle(cellStyle); // 插入公式单元格 Cell cell4 = row1.createCell(3); cell4.setCellFormula("SUM(A1:C1)"); // 计算公式 workbook.getCreationHelper().createFormulaEvaluator().evaluateAll(); // 导出Excel文件 FileOutputStream outputStream = new FileOutputStream("test.xls"); workbook.write(outputStream); outputStream.close(); ``` 希望能对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值