jxl解析问题总结
2017-09-20 13:58
232 查看
在做jxl解析excel过程中出现了几个问题,这里总结下:
删除一行excel表格
正常的workbook得到的对象是不能操作excel表格的修改的,只能在拿到数据才可以修改数据。但是,网上搜索有个方法是可以删除的,就是WritableWorkbook里有removRow(i)方法,但是我用writableworkbook操作,整个excel表格会变成空,所以,谨慎使用。
其实这个道理和io流操作一样,用写文件就会覆盖以前的内容。
解析时间格式会有”;@”
这个问题,我试了下,因为是英文的,所以会有这样的解析错误,比如同样是5点30分,中文格式:5:30,英文格式5:30,是不一样的,所以需要改变格式,代码如下:
有时候行数不准确
实际开发中,我们必须要通过获得excel的行和列数来解析他,但是我遇到了拿到行列不准确的情况,也就是:
但是我们可以通过得到实际的正行空的数量,然后减去空的行数来解决这个问题。
得到单元格中的数字内容
这个思路是用这则迭代:
是从“ 电车司机2017年9月交路表(syx-003#)”里得到201709这样的信息
删除一行excel表格
正常的workbook得到的对象是不能操作excel表格的修改的,只能在拿到数据才可以修改数据。但是,网上搜索有个方法是可以删除的,就是WritableWorkbook里有removRow(i)方法,但是我用writableworkbook操作,整个excel表格会变成空,所以,谨慎使用。
其实这个道理和io流操作一样,用写文件就会覆盖以前的内容。
解析时间格式会有”;@”
这个问题,我试了下,因为是英文的,所以会有这样的解析错误,比如同样是5点30分,中文格式:5:30,英文格式5:30,是不一样的,所以需要改变格式,代码如下:
private final static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); private static String formatDate(Cell cell, SimpleDateFormat sdf) { String cellValue=null; if (cell.getType() == CellType.DATE) { DateCell dc = (DateCell) cell; Date date = dc.getDate(); TimeZone zone = TimeZone.getTimeZone("GMT"); //SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); sdf.setTimeZone(zone); cellValue = sdf.format(date); } else{ cellValue = cell.getContents(); } return cellValue; }
有时候行数不准确
实际开发中,我们必须要通过获得excel的行和列数来解析他,但是我遇到了拿到行列不准确的情况,也就是:
int rows = sheet.getRows(); int columns = sheet.getColumns();
但是我们可以通过得到实际的正行空的数量,然后减去空的行数来解决这个问题。
protected static int getRealColumn(Sheet sheet,int rows,int columns){ int count = 0; for(int i=0;i<columns;i++){ for(int j=1;j<rows;j++){ String context = sheet.getCell(i, j).getContents(); if(StringUtils.isNotBlank(context)){ j = rows; continue; } if(j == rows){ count++; } } } System.out.println("rows = "+rows+" colums = "+columns+" count = "+count); return count; }
得到单元格中的数字内容
这个思路是用这则迭代:
是从“ 电车司机2017年9月交路表(syx-003#)”里得到201709这样的信息
public static String getDate(Sheet sheet){ //获取时间 String dateContext = ""; String context = sheet.getCell(0, 0).getContents(); Pattern pattern = Pattern.compile("\\d+"); Matcher matcher = pattern.matcher(context); while(matcher.find()){ String data = matcher.group(); // int dataInt = Integer.valueOf(data); if(data.length()<2){ data = "0"+data; } // if(data.length()==3){ // continue; // } dateContext+=data; } dateContext =dateContext.substring(0, 6); return dateContext; }
相关文章推荐
- 上传阿里云样式文件不解析问题一例总结
- 解析SQLite中的常见问题与总结详解
- springmvc 文件上传问题总结+spring上传文件源码解析
- 使用jxl.jar解析excel特殊符号乱码问题解决.
- Android中so使用知识和问题总结以及插件开发过程中加载so的方案解析
- php下载远程图片方法总结(curl手动解析header)curl跳转问题解决
- Android中so使用知识和问题总结以及插件开发过程中加载so的方案解析
- Android中so使用知识和问题总结以及插件开发过程中加载so的方案解析
- 域名解析到部署出现的问题总结
- « AFNetworking 图片的本地缓存问题 Get application bundle seed ID in iOS » AFNetworking 使用总结 (用法+JSON解析)
- 监听总结之解析问题一:由sqlnet.ora文件寻到TNSNAME适配器程序来解析网络服务名为它的具体配置(×)
- js预解析问题总结
- java excel解析:poi与jxl的区别(excel版本问题:xls,xlsx)
- 总结——背包问题解析及模板代码
- 解析SQLite中的常见问题与总结详解
- 监听总结之5.服务端和客户端的解析问题