Java tutorial
/* * Copyright (c) 2014 Red Hat, Inc. and/or its affiliates. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Cheng Fang - Initial API and implementation */ package org.jberet.support.io; import javax.batch.api.BatchProperty; import javax.inject.Inject; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; /** * The base class of Excel reader and writer classes: {@link ExcelUserModelItemReader}, * {@link ExcelUserModelItemWriter}, {@link ExcelStreamingItemWriter}. * * @see ExcelUserModelItemReader * @see ExcelStreamingItemReader * @see ExcelEventItemReader * @see ExcelUserModelItemWriter * @see ExcelStreamingItemWriter * @since 1.1.0 */ public abstract class ExcelItemReaderWriterBase extends JsonItemReaderWriterBase { @Inject @BatchProperty protected Class beanType; /** * Specifies the header as an ordered string array. For reader, header information must be specified with either * this property or {@link ExcelUserModelItemReader#headerRow} property. This property is typically specified * when there is no header row in the Excel file. For example, * <p> * "id, name, age" specifies 1st column is id, 2nd column is name and 3rd column is age. * <p> * This is a required property for writer. */ @Inject @BatchProperty protected String[] header; /** * The optional name of the target sheet. When specified for a reader, it has higher precedence over * {@link org.jberet.support.io.ExcelUserModelItemReader#sheetIndex} */ @Inject @BatchProperty protected String sheetName; protected Workbook workbook; protected Sheet sheet; protected int currentRowNum; /** * Saves string values to a string array for all non-blank cells in the row passed in. Useful when trying to get * header values. * * @param row the source row to get values from * @return a String array containing values from all non-blank cells in the row */ protected static String[] getCellStringValues(final Row row) { final short firstCellNum = row.getFirstCellNum(); final short lastCellNum = row.getLastCellNum(); final String[] values = new String[lastCellNum - firstCellNum]; for (int i = 0; i < values.length; ++i) { values[i] = row.getCell(i).getStringCellValue(); } return values; } }