本文目录一览:

jxl 导出excel 结果打开文件出现“文件错误,某些数据格式已丢失” 查了很多网上的回答 说是excel版本问题

会出现这种情况的,譬如你使用2010版的Excel打开2003版的excel文件,在里面进行编辑,同时使用了很多只有2010版及其以上的版本才会有的功能或者模块。那么你在保存的时候他就会提示你如下:

这个时候如果你保存的话,当你再次打开的时候就可能会出现你所说的情况。

2.解决办法是:点击文件菜单,在点击信息,选择转换,转换文件的格式。

3.点击确定,这样你的文件就是保存为最新版本的EXcel文件,同时你使用的命令或者模块就不会丢失。

以上,希望对你有所帮助。

jxl怎么导出excel2007

public String exportxm() throws Exception {

HttpServletRequest request = ServletActionContext.getRequest();

// String wid=request.getParameter("wid");

String[] headers = { "项目名称", "填报人", "填报时间", "合同额", "预计毛利", "项目计划完成时间", "所属部门"};

String[] columns = { "sernum", "personer.name", "times","xsjobes", "xsb", "plannedate", "subdept.name"};

MapString, Object values = new HashMapString, Object();

//PageWorktype page1 = new PageWorktype(40);

// 设置默认排序方式

if (!page.isOrderBySetted()) {

page.setOrderBy("id");

page.setOrder(Page.DESC);

}

page.setPageSize(9999);

page = manager.searchWork(page, values);

String title="项目管理表";

// 生成Excel文件.

Workbook wb = new ExcelExport(title, headers,columns, page)

.exportExcelWorkbook();

// 输出Excel文件.

HttpServletResponse response = Struts2Utils.getResponse();

response.setContentType(ServletUtils.EXCEL_TYPE);

ServletUtils.setFileDownloadHeader(response, "项目管理-"+accountManager.getcurrentUser().getName()+".xls");

wb.write(response.getOutputStream());

response.getOutputStream().flush();

return null;

}

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

/**

* 设置让浏览器弹出下载对话框的Header.

*

* @param fileName 下载后的文件名.

*/

public static void setFileDownloadHeader(HttpServletResponse response, String fileName) {

try {

//中文文件名支持

String encodedfileName = new String(fileName.getBytes(), "ISO8859-1");

response.setHeader("Content-Disposition", "attachment; filename=/"" + encodedfileName + "/"");

} catch (UnsupportedEncodingException e) {

}

}

public static final String EXCEL_TYPE = "application/vnd.ms-excel";

、、、、、、、、、、、、、、、

/**

* 导出到excel

* @param title 标题

* @param headers 表格头

* @param result 数据

*/

@SuppressWarnings({ "rawtypes", "unchecked" })

public ExcelExport(String title,String[] headers,String[]columns, Page page){

this.title=title;

this.headers=headers;

this.result=transhashmap(columns, page.getResult());

}

/**

* 将listObject 转换为ListHashMapInteger, Object

* @param columns

* @param olist

* @return

*/

private ListHashMapInteger, Object transhashmap(String[] columns,ListObject olist){

ListHashMapInteger, Object result=Lists.newArrayList();

for(Object o:olist){

HashMapInteger, Object ht=this.transhashmap(columns, o);

result.add(ht);

}

return result;

}

/**

* 将object 转换为hashmap

* @param columns

* @param olist

* @return

*/

private HashMapInteger, Object transhashmap(String[] columns,Object o){

int col=0;

HashMapInteger, Object ht=new HashMapInteger, Object();

for(String column:columns){

//根据属性名称直接获取值

Object value=this.invokeGetterMethod(o, column);

ht.put(col,value);

col=col+1;

}

return ht;

}

jxl导出Excel为日期格式

1、看一下jxl设置数据时能不能选择数据格式,从你exl中看这个导出数据用是字符串的格式

2、不行的话,可以设置这个列宽,这样不用双击也可以显示

如何用jxl导出大批量数据到Excel

jxl最多支持excel2003,所以单sheet最大的记录数为65536;Office2007单sheet支持的记录数已经超过100W了。

对于大批量数据,我都是每次取65535条记录出来(第一行有表头)放在一个Sheet里面。插入完毕后清空list再去取下一页。

经测试,单文件多Sheet出现内存溢出比多文件单sheet的机率大得太多,服务器的jvm怎么得也要512以上。