/* * Copyright (c) 2008-2016 Computer Network Information Center (CNIC), Chinese Academy of Sciences. * * This file is part of Duckling project. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package cn.vlabs.umt.common.xls; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class UserXLSParser { public UserXLSParser(InputStream in) throws XLSException{ HSSFWorkbook workbook; try { workbook = new HSSFWorkbook(in); sheet =workbook.getSheetAt(0); total=sheet.getLastRowNum(); } catch (IOException e) { throw new XLSException(e.getMessage()); } } public int getCount(){ return total; } /** * 读取用户 * @param start 从0开始 * @param count 读取的用户数 * @return 用户信息 */ public List<UserVO> readUsers(int start, int count){ List<UserVO> users=new ArrayList<UserVO>(); int i=0; int index=start+1; while (i<count && index<=total){ UserVO u = parseLine(sheet, index); if (u.getUmtId()!=null && ! usernames.contains(u.getUmtId())){ users.add(u); usernames.add(u.getUmtId()); i++; } index++; } return users; } private UserVO parseLine(HSSFSheet sheet, int row){ // 根据行数取得Sheet的一行 HSSFRow rowline = sheet.getRow(row); // 获取当前行的列数 UserVO u = new UserVO(); u.setUmtId(readCellValue(rowline.getCell((short)0))); u.setTrueName(readCellValue(rowline.getCell((short)1))); u.setPassword(readCellValue(rowline.getCell((short)2))); u.setCstnetId(readCellValue(rowline.getCell((short)3))); if (StringUtils.isEmpty(u.getCstnetId())) { u.setCstnetId(u.getUmtId()); } return u; } private String readCellValue(HSSFCell cell){ if (cell!=null){ String cellvalue = null; switch (cell.getCellType()){ case HSSFCell.CELL_TYPE_NUMERIC: cellvalue = Integer.toString((int)cell.getNumericCellValue()); break; default: cellvalue=cell.getRichStringCellValue().getString(); break; } return cellvalue; }else { return null; } } private Set<String> usernames=new HashSet<String>(); private int total; private HSSFSheet sheet ; }