1.你的excel模版本身有问题,可以尝试新建一个模版。
2.你的excel使用了一些POI不支持的函数。
解决办法:
另存是由excel重写了完整的文件,可以解决问题。
关闭文件例子:
FileOutputStream os = new FileOutputStream("workbook.xls")
wb.write(os)
os.close()
在保护状态下execl的格式有可能正在被使用,你这边修改,准确说是线程冲桥空纳突,一般excel值会作为导出文件的模板,是不会编辑的。你可以在读的时候判断execl是否正在被使用。
下面亏前的代码问题,你可以参考
package com.hwt.glmf.common
import java.io.IOException
import java.io.OutputStream
import java.util.ArrayList
import java.util.List
import javax.servlet.http.HttpServletResponse
import org.apache.poi.hssf.usermodel.HSSFCell
import org.apache.poi.hssf.usermodel.HSSFCellStyle
import org.apache.poi.hssf.usermodel.HSSFFont
import org.apache.poi.hssf.usermodel.HSSFRichTextString
import org.apache.poi.hssf.usermodel.HSSFRow
import org.apache.poi.hssf.usermodel.HSSFSheet
import org.apache.poi.hssf.usermodel.HSSFWorkbook
import org.apache.poi.hssf.util.CellRangeAddress
import org.apache.poi.hssf.util.HSSFColor
/**
* 导出Excel公共方法
* @version 1.0
*
* @author wangcp
*
*/
public class ExportExcel extends BaseAction {
//显示的导出表的标题
private String title
//导出表的列名
private String[] rowName
private List<Object[]>dataList = new ArrayList<Object[]>()
HttpServletResponse response
//构造方法,传入要导出的数据
public ExportExcel(String title,String[] rowName,List<Object[]>dataList){
this.dataList = dataList
this.rowName = rowName
this.title = title
}
/*
* 导出数据
* */
public void export() throws Exception{
try{
HSSFWorkbook workbook = new HSSFWorkbook()// 创建工作簿对象
HSSFSheet sheet = workbook.createSheet(title)// 创建工作表
// 产生表格标题行
HSSFRow rowm = sheet.createRow(0)
HSSFCell cellTiltle = rowm.createCell(0)
//sheet样式定义【getColumnTopStyle()/getStyle()均为自定义方法 - 在下面 - 可扩展】
HSSFCellStyle columnTopStyle = this.getColumnTopStyle(workbook)/敏没/获取列头样式对象
HSSFCellStyle style = this.getStyle(workbook)//单元格样式对象
sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, (rowName.length-1)))
cellTiltle.setCellStyle(columnTopStyle)
cellTiltle.setCellValue(title)
// 定义所需列数
int columnNum = rowName.length
HSSFRow rowRowName = sheet.createRow(2)// 在索引2的位置创建行(最顶端的行开始的第二行)
// 将列头设置到sheet的单元格中
for(int n=0n<columnNumn++){
HSSFCell cellRowName = rowRowName.createCell(n)//创建列头对应个数的单元格
cellRowName.setCellType(HSSFCell.CELL_TYPE_STRING)//设置列头单元格的数据类型
HSSFRichTextString text = new HSSFRichTextString(rowName[n])
cellRowName.setCellValue(text)//设置列头单元格的值
cellRowName.setCellStyle(columnTopStyle)//设置列头单元格样式
}
是不是在 vista 或 Windows 7 下运行,如果是这样用核高管理员身份运行试行锋试。改带尺FileOutputStream fileOut = new FileOutputStream(outFileName)
wb.write(fileOut)
fileOut.close()//是不是没写这句?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)