java下载excal2003的公共方法
public static File exportToexcel(List list,HSSFWorkbook workbook,List<TemplateFieldPO> fieldList,TemplateFormPO po,String filenum) throws IOException {
String[] fieldArray =null;
String[] headerArray =null;
IPersistenceService dao = SwordPersistenceUtils.getPersistenceService();
if(po.getIsDisabled().trim().equals("1")){
fieldArray=new String[fieldList.size()+10];
headerArray=new String[fieldList.size()+10];
fieldArray[0]="name";
headerArray[0]="姓名";
fieldArray[1]="dcsid";
headerArray[1]="残疾证号";
fieldArray[2]="nation";
headerArray[2]="民族";
fieldArray[3]="regaddr";
headerArray[3]="户籍地址";
List<Map<String,Object>> listBaseInfo=findBaseInfoList(dao);
for(int i=0;i<listBaseInfo.size();i++){
fieldArray[i+4]=listBaseInfo.get(i).get("dictCode").toString();
headerArray[i+4]=listBaseInfo.get(i).get("dictName").toString();
}
for(int i=10;i<fieldArray.length;i++){
fieldArray[i]=fieldList.get(i-10).getFieldCode();
headerArray[i]=fieldList.get(i-10).getFieldName();
}
}else{
fieldArray=new String[fieldList.size()];
headerArray=new String[fieldList.size()];
for(int i=0;i<fieldArray.length;i++){
fieldArray[i]=fieldList.get(i).getFieldCode();
headerArray[i]=fieldList.get(i).getFieldName();
}
}
HSSFSheet sheet = workbook.createSheet("sheet1");
//第一行,表头
Row row2 = sheet.createRow((short)0);
for(int i=0;i<headerArray.length;i++){
Cell cel2 = row2.createCell((short)i);
cel2.setCellValue(headerArray[i]);
}
//从第二行开始,数据
HSSFCellStyle style = workbook.createCellStyle(); // 样式对象
HSSFFont font = workbook.createFont();
Row row = null;
Cell cel = null;
Map map=null;
Object fieldvalue=null;
String value=null;
////////////////////GLW
TemplateFieldPO fieldpo=fieldList.get(1);
Map<String,String> baseMap=DownUtil.getBaseDictName(dao);
Map<String,String> TempMap=DownUtil.getItemName(dao, fieldpo.getFormId());
////////////////////
if(po.getIsDisabled().trim().equals("1")){
for(int i=0;i<list.size();i++){
int j = 0;
row = sheet.createRow((i+1));
map=(Map)list.get(i);
for(int k=0;k<fieldArray.length;k++){
fieldvalue=map.get(fieldArray[k]);
if(fieldvalue==null){
creatCell(workbook,style,font,row,cel,j,"");
}else{
if(k<4){
creatCell(workbook,style,font,row,cel,j,fieldvalue.toString());
}else if(k<10){
value=baseMap.get(fieldArray[k].toString()+"_"+fieldvalue.toString());
creatCell(workbook,style,font,row,cel,j,value);
}else{
TemplateFieldPO fieldpo_1=fieldList.get(k-10);
if(fieldpo_1.getComponentType()!=null && (fieldpo_1.getComponentType().trim().equals("3") || fieldpo_1.getComponentType().trim().equals("4") || fieldpo_1.getComponentType().trim().equals("5"))){
value=DownUtil.getNameByMap(baseMap, TempMap, fieldpo_1.getDictCode(), fieldvalue.toString());
creatCell(workbook,style,font,row,cel,j,value);
}else{
creatCell(workbook,style,font,row,cel,j,fieldvalue.toString());
}
}
}
j++;
}
}
}else{
for(int i=0;i<list.size();i++){
int j = 0;
row = sheet.createRow((i+1));
map=(Map)list.get(i);
for(int k=0;k<fieldArray.length;k++){
fieldvalue=map.get(fieldArray[k]);
if(fieldvalue==null){
creatCell(workbook,style,font,row,cel,j,"");
}else{
TemplateFieldPO fieldpo_2=fieldList.get(k);
if(fieldpo_2.getComponentType()!=null && (fieldpo_2.getComponentType().trim().equals("3") || fieldpo_2.getComponentType().trim().equals("4") || fieldpo_2.getComponentType().trim().equals("5"))){
value=DownUtil.getNameByMap(baseMap, TempMap, fieldpo_2.getDictCode(), fieldvalue.toString());
creatCell(workbook,style,font,row,cel,j,value);
}else{
creatCell(workbook,style,font,row,cel,j,fieldvalue.toString());
}
}
j++;
}
}
}
//将文件保存到指定位置
String filePath = TemplateFormService.class.getClassLoader().getResource("").toString();
int index = filePath.lastIndexOf("WEB-INF");
if(filePath.indexOf("file")<0){
filePath = filePath.substring(1, index);
}else{
filePath = filePath.substring(6, index);
}
String time=new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());
filePath = filePath+"excelFiles/"+po.getFormCode()+time+"_"+filenum+".xls";
File file=new File(filePath);
try{
OutputStream out=new FileOutputStream(file);
workbook.write(out);
out.close();
}catch(Exception e){
e.printStackTrace();
}
return file;
}
////////////////////////////////////////////
private static List<Map<String,Object>> findBaseInfoList(IPersistenceService dao){
StringBuffer sql=new StringBuffer();
sql.append("select distinct t.dict_code,t.dict_name from base_info_dict_item t");
List<Map<String,Object>> list=dao.findAllBySql(sql.toString());
return list;
}
其中有大量冗余部分 是对数据校验和处理,可以去除,这里放的是源代码 所以不做处理了,这个框架是公司内部框架,有些个别方法晚上是查不到的,同样不做解释