1.1上传要点
1.1.1 form表单的提交方式必须设置为 method = post;
1.1.2 form表单属性必须设置为enctype="multipart/form-data"
1.1.3 form表单中添加input标签,type=”file”,name = example
1.1.4 action中,必须设置属性public File example,并提供set方法
,还可以获取文件的名称和文件类型,但是他们的命名有严格的要求,
文件名必须命名为:exampleFileName,而文件类型必须命名为
exampleFileContentType,并为他们提供set方法。
1.2文件的读取
1.2.1 通过1.1就可以在action中获取到excel文件的File对象。然后可以
对File对象进行操作。为了将excel文件中的内容解析出来,这里需要
用到POI进行操作。其中操作2003版本的excel和操作2007版本的
Excel不同在于用到的API是不同的。废话不多说,直接上代码:
(这里请注意,很多同学可能碰到的项目中原来使用的是2003版的excel
而现在又想用2007版,那么你可能碰到jar包冲突的问题,下面我会
接受两种解决jar包冲突的方案,请大家指正)。
1.2.2 解析2003版的Excel表格代码
publicvoid ExcelXLS( File excel) throws Exception {
if (null == excel) { thrownew Exception("excel表格为空"); }
HSSFWorkbook hworkbook = null; FileInputStream is = new FileInputStream(excel); hworkbook = new HSSFWorkbook(is); HSSFSheet sheet = hworkbook.getSheetAt(0); introws = sheet.getLastRowNum(); //只获取第一列的内容 for (introwIndex = 0, col = 0; rowIndex < rows; rowIndex++) { HSSFRow row2 = sheet.getRow(rowIndex); //获取单元格内容 String conment = row2.getCell(col).toString(); System.out.println(conment); } } |
1.2.2 解析2007版的Excel表格代码
publicvoid ExcelXLSX( File excel) throws Exception { if (null == excel) { thrownew Exception("excel表格为空"); } XSSFWorkbook xWorkbook = null; FileInputStream is = new FileInputStream(excel); xWorkbook = new XSSFWorkbook(is); XSSFSheet xsheet = xWorkbook.getSheetAt(0); int rows = xsheet.getLastRowNum(); //只获取第一列的内容 for (introwIndex = 0, col = 0; rowIndex < rows; rowIndex++) { XSSFRow row2 = xsheet.getRow(rowIndex); //获取单元格内容 String conment = row2.getCell(col).toString(); System.out.println(conment); } } |
1.3POI jar包冲突解决
1.3.1 异常信息
org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:61) |
1.3.2 解决方案
1)将xbean-2.2.0.jar替换为xbean-2.3.0.jar
2)删除xbean-2.2.0.jar,替换为poi-3.6目录下ooxml-lib目录下
的dom4j-1.6.1.jar、geronimo-stax-api_1.0_spec-1.0.jar、
xmlbeans-2.3.0.jar,当然如果你已经导入了dom4j,这里就没
有必要再替换了,注意版本。