求解决方案 目前我有一批数据需要从客户端的Excel文件中导入,并且对数据中的某一行进行逻辑校验和重复校验(同个文档中是否有相同数据),然后将校验结果在页面中显示,并将有错误的列在前面。数据量在10000条左右。我曾尝试开发过一个,但是当数据大于400条就会造成页面卡死,没反应。有没有比较好的方法解决,由于放在互联网上,速度也不能太慢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我用的这个,可以用,但是没有经过大量数据测试: public List uploadExcel(String filePath) { List<String> list = new ArrayList<String>(); try { HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream( filePath));//将得到的文件放到HSSFWorkbook HSSFSheet sheet = workbook.getSheetAt(0);// 在Excel文档中,第一张工作表的缺省索引是0 int rows = sheet.getPhysicalNumberOfRows();// 获取到Excel文件中的所有行数 // 遍历列 for (int i = 1; i < rows; i++) { // 读取左上端单元格 HSSFRow row = sheet.getRow(i);//得到行数 String value = "";// int cells = row.getPhysicalNumberOfCells();// 获取到Excel文件中的所有的列 int cells = sheet.getRow(i).getLastCellNum();// System.out.println("第"+i+"行:"+sheet.getRow(i).getLastCellNum()); int ce = row.getLastCellNum(); if (row != null) {// 行不为空 // 遍历列 for (int j = 0; j < row.getLastCellNum(); j++) {//Resource.xls每行具有八列 HSSFCell cell = row.getCell((short) j);// 获取到列的值 if (cell != null) { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_FORMULA: break; case HSSFCell.CELL_TYPE_NUMERIC:// 判断是否为数字 value += cell.getNumericCellValue() + ";"; break; case HSSFCell.CELL_TYPE_BLANK: // 判断是否为空格,若为空格,则用&代替 value += "&" + ";"; break; case HSSFCell.CELL_TYPE_STRING:// 判断是否为字符串 value += cell.getStringCellValue() + ";"; break; case HSSFCell.CELL_TYPE_BOOLEAN: break; case HSSFCell.CELL_TYPE_ERROR: break; default: break; } }else{ continue; } } } StringBuffer sb = new StringBuffer(); for(int m=0;m<row.getLastCellNum();m++){ sb.append("&;"); } if (!value.equals(sb.toString())) {// 若一行为空格,则不加入list集合中 list.add(value); } } } catch (Exception e) { e.printStackTrace(); } return list; } 10000数据,如果采用页面级DOM操作,想不死也难。直接数据库中操作吧 extjs调试 getElementsByTagName为什么获取不了? EXTJS中如何在外部调用函数 [急],如何获得可编辑Div光标位置? 网页代码加上超链接 一段JS在火狐的怪问题 请问用js怎么实现对关闭ie窗口前,提示"是否退出系统?"如果是就关闭,如果不是就不关闭? msn space动态编辑网页是如何实现的. 一个JS语法问题 link media 事件有人可以帮帮解答吗?? 急求extjs视频教程!!!!!高分答谢 div 宽度固定
List<String> list = new ArrayList<String>();
try {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(
filePath));//将得到的文件放到HSSFWorkbook
HSSFSheet sheet = workbook.getSheetAt(0);// 在Excel文档中,第一张工作表的缺省索引是0
int rows = sheet.getPhysicalNumberOfRows();// 获取到Excel文件中的所有行数
// 遍历列
for (int i = 1; i < rows; i++) {
// 读取左上端单元格
HSSFRow row = sheet.getRow(i);//得到行数
String value = "";
// int cells = row.getPhysicalNumberOfCells();// 获取到Excel文件中的所有的列
int cells = sheet.getRow(i).getLastCellNum();
// System.out.println("第"+i+"行:"+sheet.getRow(i).getLastCellNum());
int ce = row.getLastCellNum();
if (row != null) {// 行不为空
// 遍历列
for (int j = 0; j < row.getLastCellNum(); j++) {//Resource.xls每行具有八列
HSSFCell cell = row.getCell((short) j);// 获取到列的值
if (cell != null) {
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_FORMULA:
break;
case HSSFCell.CELL_TYPE_NUMERIC:// 判断是否为数字
value += cell.getNumericCellValue() + ";";
break;
case HSSFCell.CELL_TYPE_BLANK: // 判断是否为空格,若为空格,则用&代替
value += "&" + ";";
break;
case HSSFCell.CELL_TYPE_STRING:// 判断是否为字符串
value += cell.getStringCellValue() + ";";
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
break;
case HSSFCell.CELL_TYPE_ERROR:
break;
default:
break;
}
}else{
continue;
}
}
}
StringBuffer sb = new StringBuffer();
for(int m=0;m<row.getLastCellNum();m++){
sb.append("&;");
}
if (!value.equals(sb.toString())) {// 若一行为空格,则不加入list集合中
list.add(value);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
直接数据库中操作吧