首页 > 编程知识 正文

excel技巧,excel教程

时间:2023-05-06 19:16:16 阅读:173022 作者:1010

1、异常的Java.lang.noclassdeffounderror 3360 org/Apache/poi/unsupportedfileformatexception

解决方法:使用的poi的相关jar包一定版本一定要相同!!!!!

2、maven使用的jar包,如果未使用maven,则为两个jar包: poi-3.9.jar和poi-ooxml-3.9.jar (主要用于Excel2007或更高版本)

ependencygroupidorg.Apache.poi/groupidartifactidpoi/artifactidversion 3.9/version/dependencydepencygroupidorg.porg

首先上传Excel

//excel @ request mapping (/upload excel ) (publicbooleanuploadexcel ) @requestparammultipartfilefile,http servlet request //windowsstringsavepath=request.getsession (.getservletcontext ).get realpath (文件路径); //Linux//string save path='/home/ODC user/web apps/file '; 文件目标文件=new file (save path; if (! targetFile.exists () ({ targetFile.mkdirs ); (file.Transferto ) )目标文件; 返回真; } return false; 正在读Excel的内容

publicstaticvoidreadexcel (throws exception (inputstream is=newfile inputstream ) new file ) filename ); workbook hssf workbook=空; filename.endswith (xlsx ) (HSSFworkbook=newxssfworkbook ) is ); //excel 2007 } else if (filename.endswith (xls ) ) HSSFworkbook=newHSSFworkbook ) is ); //excel 2003 }//hssfworkbookhssfworkbook=newhssfworkbook (is ); //xssfworkbookhssfworkbook=newxssfworkbook (is; 用户student=null; ListUser list=new ArrayListUser (; //循环工作表sheetfor (intnum sheet=0; numsheethssfworkbook.getnumberofsheets (; num sheet (//hssfsheethssfsheet=hssf workbook.getsheetat (num sheet ) ); sheethssfsheet=hssf workbook.getsheetat (num sheet ); hssf sheet==null ) {continue; (//循环行rowfor ) intrownum=1; rowNum=hssfSheet.getLastRowNum (; rowNum )//hssfrowhssfrow=hssf sheet.getrow (rownum ); rowhssfrow=hssf sheet.getrow (rownum ); 汇丰银行!=null () {student=new User ); //hssfcellname=hssf row.getcell (0; //hssfcellpwd=hssf row.getcell (1; cellname=HSSFrow.getcell(0; 小区pwd=

hssfRow.getCell(1);//这里是自己的逻辑student.setUserName(name.toString());student.setPassword(pwd.toString());list.add(student);}}}}

4、导出Excel

//创建Excel@RequestMapping("/createExcel")public String createExcel(HttpServletResponse response) throws IOException {//创建HSSFWorkbook对象(excel的文档对象)HSSFWorkbook wb = new HSSFWorkbook();//建立新的sheet对象(excel的表单)HSSFSheet sheet=wb.createSheet("成绩表");//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个HSSFRow row1=sheet.createRow(0);//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个HSSFCell cell=row1.createCell(0);//设置单元格内容cell.setCellValue("学员考试成绩一览表");//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));//在sheet里创建第二行HSSFRow row2=sheet.createRow(1);//创建单元格并设置单元格内容row2.createCell(0).setCellValue("姓名");row2.createCell(1).setCellValue("班级");row2.createCell(2).setCellValue("笔试成绩");row2.createCell(3).setCellValue("机试成绩");//在sheet里创建第三行HSSFRow row3=sheet.createRow(2);row3.createCell(0).setCellValue("ngdqyg");row3.createCell(1).setCellValue("As178");row3.createCell(2).setCellValue(87);row3.createCell(3).setCellValue(78);//.....省略部分代码//输出Excel文件OutputStream output=response.getOutputStream();response.reset();response.setHeader("Content-disposition", "attachment; filename=details.xls");response.setContentType("application/msexcel");wb.write(output);output.close();return null;}

补充说明乱码问题

  1、文件名乱码(我发现只要解决了文件名乱码,其他乱码也会跟着解决)response.setHeader("Content-disposition", "attachment; filename=中文.xls");

  这个方法可以当做一个公用方法来使用,以后有乱码的都可以调用此方法

public static String toUtf8String(String s){ StringBuffer sb = new StringBuffer(); for (int i=0;i<s.length();i++){ char c = s.charAt(i); if (c >= 0 && c <= 255){sb.append(c);} else{ byte[] b; try { b = Character.toString(c).getBytes("utf-8");} catch (Exception ex) { System.out.println(ex); b = new byte[0]; } for (int j = 0; j < b.length; j++) { int k = b[j]; if (k < 0) k += 256; sb.append("%" + Integer.toHexString(k).toUpperCase()); } } } return sb.toString(); }

调用的时候,response.setHeader("Content-disposition", "attachment; filename="+toUtf8String("中文.xls"));

 我上网查的时候,网上是说

 今天要说的是在创建工作表时,用中文做文件名和工作表名会出现乱码的问题,先说以中文作为工作表名,大家创建工作表的代码一般如下:

    HSSFWorkbook workbook = new HSSFWorkbook();//创建EXCEL文件

        HSSFSheet  sheet= workbook.createSheet(sheetName);    //创建工作表

    这样在用英文名作为工作表名是没问题的,但如果sheetName是中文字符,就会出现乱码,解决的方法如下代码:

    HSSFSheet  sheet= workbook.createSheet();

    workbook.setSheetName(0, sheetName,(short)1); //这里(short)1是解决中文乱码的关键;而第一个参数是工作表的索引号。        但是我发现根本没有这个方法,只需要改了文件名的乱码,其他乱码自然就解决了!!!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。