读取Excel后在JSP页面显示 热:报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

读取Excel后在JSP页面显示 热:报错

kun坤 2020-06-07 17:06:56 179

最近项目中需要读取一个Excel文件在JSP页面上显示

读取没有问题了,显示有点小问题,有没有成型的代码可以参考的。

就是把Excel原样显示出来即可。

.js报错显示 jsp报错 页面显示 jsp页面显示报错 jsp页面报错
分享到
取消 提交回答
全部回答(1)
  • kun坤
    2020-06-07 17:07:00
    /**
    	 * 读取Excel表格内容,生成纯文本
    	 * @param is 输入流
    	 * @return 返回文本字符串
    	 * @throws IOException 抛出IO异常
    	 */
    	@SuppressWarnings("deprecation")
    	public static String extractTextFromXLS(InputStream is)  throws IOException {    
        StringBuffer content  = new StringBuffer();    
        HSSFWorkbook workbook = new HSSFWorkbook(is); //创建对Excel工作簿文件的引用     
    
        for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {    
            if (null != workbook.getSheetAt(numSheets)) {    
                HSSFSheet aSheet = workbook.getSheetAt(numSheets); //获得一个sheet    
    
                for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {    
                    if (null != aSheet.getRow(rowNumOfSheet)) {    
                        HSSFRow aRow = aSheet.getRow(rowNumOfSheet); //获得一行    
    
                        for (short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {    
                            if (null != aRow.getCell(cellNumOfRow)) {    
                                HSSFCell aCell = aRow.getCell(cellNumOfRow); //获得列值    
                                                                    
                                if(aCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){    
                                 content.append(aCell.getNumericCellValue());    
                                }else if(aCell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN){    
                                 content.append(aCell.getBooleanCellValue());    
                                }else {    
                                 content.append(aCell.getStringCellValue());    
                                }    
                            }    
                        }    
                    }    
                }    
            }  
           
        }    
    
        return content.toString();	
    		
    	}

    上面是我读取.xls文档的代码 返回值是string类型

    ######

    自己画个table,输出不就ok了,你有什么特殊的要求? 

    ######

    他的意思是说,原样输出, 也就是合并的单元格也显示正确,是这样子的吧?楼主?

    ######

    恩,回复楼上,是这样的。

    ######

    输出的时候 还没考虑格式,但是什么都不显示。

    ######

    如果是在IE的话,可以直接设置respose.setContentType为excel的那种格式,直接输入excel文件流即可.

    ######

    我以前用jxl读取excel模板然后嵌入数据的,给你参考一下

    1. public class JxlExcel{
    2. public static void main(String[] args)
    3. {
    4. try
    5. {
    6. String url="D:/template/test.xls";
    7. //第一步:选择模板文件 通过模板得到一个可写的Workbook:
    8. Workbook wb = Workbook.getWorkbook(new File(url));
    9. //这样定义这个输出流对象。第二个参数代表了要读取的模板。
    10. ByteArrayOutputStream targetFile = new ByteArrayOutputStream();
    11. WritableWorkbook wwb = Workbook.createWorkbook(targetFile, wb);
    12. //第一个参数是一个输出流对象,比如可以
    13. //第三步:选择模板的Sheet:
    14. WritableSheet wws = wwb.getSheet(0);
    15. //第四步:选择单元格,写入动态值,根据单元格的不同类型转换成相应类型的单元格:
    16. /* Label A1 = (Label)wws.getWritableCell(2,0);
    17. A1.setString("单元格内容");*/
    18. Label C1 = new Label(2,0,"单元格内容");
    19. wws.addCell(C1);
    20. wwb.close();
    21. wb.close();
    22. System.out.println("盒封面.xls");
    23. }
    24. catch (Exception e)
    25. {
    26. e.printStackTrace();
    27. }
    28. }
    29. }
    ######

    引用来自#7楼“bobshi”的帖子

    如果是在IE的话,可以直接设置respose.setContentType为excel的那种格式,直接输入excel文件流即可.

     嗯,谢谢我正在这样做。

    ######

    把头文件变为text/plain,可以显示了,但是有异常。

    ######

    我自己写了一个读取Excel表格的工具类,现在读取表格没有问题了,还有个方法判断合并单元格的。

    有时间给大家分享下。

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

相似问题
最新问题