/** 只用于读取xls数据 xls文件名做成参数 */ public ExcelOper(File file) { try { // Workbook workbook = null; readOnlyWBook = true; // 设置workbook workbook = Workbook.getWorkbook(file); } catch (BiffException e) { logger.error(e.getMessage()); throw new BaseException(e); } catch (IOException e) { logger.error(e.getMessage()); throw new BaseException(e); } // 设置当前工作workbook if (workbook != null) { setWorkbook(workbook); } }
/** * 用于根据模板生成新的xls * * @param tplFile 模板文件路径 * @param sFile 新的文件路径 */ public ExcelOper(File tplFile, File sFile) { try { // 取得模板文件 workbook = Workbook.getWorkbook(tplFile); // 生成新文件 wrWorkbook = Workbook.createWorkbook(sFile, workbook); readOnlyWBook = false; } catch (BiffException e) { // 写日志 logger.error(e.getMessage()); // 抛出异常 throw new BaseException(e); } catch (IOException e) { // 写日志 logger.error(e.getMessage()); // 抛出异常 throw new BaseException(e); } }
public String readFile() throws IOException { File inputWorkbook = new File(archivo); Workbook w; try { String msg = ""; w = Workbook.getWorkbook(inputWorkbook); // Get the first sheet Sheet sheet = w.getSheet(0); // int defaultRows = sheet.getRows(); // Si la cantidad de columnas es 4 if (sheet.getColumns() >= 4 && sheet.getRows() > 1) { // Valido que las cabeceras tengan el formato correcto if (!sheet.getCell(0, 0).getContents().equals("ORIGEN") || !sheet.getCell(1, 0).getContents().equals("DESTINO") || !sheet.getCell(2, 0).getContents().equals("PRODUCTO") || !sheet.getCell(3, 0).getContents().equals("PIEZAS")) { msg = Msg.translate(getCtx(), "Column Names"); return msg; } // El vector que almacena la estructura de traspasos Vector<Movimiento> movimientos = new Vector<Movimiento>(); Iterator<Movimiento> iterator_movimientos = null; Movimiento movimiento_temporal = null, movimiento_nuevo = null; for (int i = 1; i < sheet.getRows() && getStore(sheet.getCell(0, i).getContents()) != null; i++) { // Capturo el origen MWarehouse origen = getStore(sheet.getCell(0, i).getContents()); MWarehouse destino = getStore(sheet.getCell(1, i).getContents()); String isStore = "N"; // Aca debo bucar los values de los m_warehouse que son cd String sql = "SELECT XX_IsStore FROM M_Warehouse WHERE M_Warehouse_ID in ( " + origen.getM_Warehouse_ID() + "," + destino.getM_Warehouse_ID() + ")"; PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = DB.prepareStatement(sql, null); rs = pstmt.executeQuery(); while (rs.next()) { if (rs.getString(1).equals("Y")) isStore = rs.getString(1); } } catch (Exception a) { log.log(Level.SEVERE, sql, a); } finally { DB.closeResultSet(rs); DB.closeStatement(pstmt); } if (origen == null || isStore.equals("Y")) return Msg.translate(getCtx(), "Cell A Error") + (i + 1) + " " + sheet.getCell(0, i).getContents(); // Capturo el destino if (destino == null || isStore.equals("Y")) return Msg.translate(getCtx(), "Cell B Error") + (i + 1) + " " + sheet.getCell(1, i).getContents(); // Capturo el producto String p_id = sheet.getCell(2, i).getContents(); MProduct producto = getProduct(p_id); if (producto == null) { return Msg.translate(getCtx(), "Cell C Error") + (i + 1) + " " + sheet.getCell(2, i).getContents(); } // Capturo las piezas Double piezas = null; try { if (sheet.getCell(3, i) != null) piezas = Double.parseDouble(sheet.getCell(3, i).getContents()); } catch (NumberFormatException e) { return Msg.translate(getCtx(), "Cell D Error") + (i + 1) + " " + sheet.getCell(3, i).getContents(); } if (piezas == null) { return Msg.translate(getCtx(), "Cell D Error") + (i + 1) + " " + sheet.getCell(3, i).getContents(); } // Agregar cada fila al vector de traspasos iterator_movimientos = movimientos.iterator(); boolean encontrado = false; while (iterator_movimientos.hasNext()) { movimiento_temporal = iterator_movimientos.next(); // Si un traspaso anterior va a la misma tienda, departamento, etc if (movimiento_temporal.origen == origen.get_ID()) { if (movimiento_temporal.destino == destino.get_ID()) { if (movimiento_temporal.departamento == producto.getXX_VMR_Department_ID()) { // Entonces agregar algo al objeto traspaso movimiento_temporal.agregarCantidades(producto.get_ID(), piezas); encontrado = true; break; } } } } // Si no se encontró en el vector de traspasos agregarlo if (!encontrado) { movimiento_nuevo = new Movimiento( origen.get_ID(), destino.get_ID(), producto.getXX_VMR_Department_ID()); movimiento_nuevo.agregarCantidades(producto.get_ID(), piezas); movimientos.add(movimiento_nuevo); } } // Una vez leido todo el archivo se procede a crear los traspasos // System.out.println(traspasos); return procesarMovimientos(movimientos).toString(); } else { return Msg.translate(getCtx(), "4 Columns"); } } catch (BiffException e) { log.log(Level.SEVERE, e.getMessage()); } return ""; }