Example usage for org.apache.poi.xssf.usermodel XSSFSheet getLastRowNum

List of usage examples for org.apache.poi.xssf.usermodel XSSFSheet getLastRowNum

Introduction

In this page you can find the example usage for org.apache.poi.xssf.usermodel XSSFSheet getLastRowNum.

Prototype

@Override
    public int getLastRowNum() 

Source Link

Usage

From source file:org.azkfw.datasource.excel.ExcelDatasourceBuilder.java

License:Apache License

/**
 * ?//from  w  w  w .  ja  v a 2  s . c  om
 * 
 * @return 
 * @throws FileNotFoundException
 * @throws ParseException
 * @throws IOException
 */
@SuppressWarnings({ "unchecked", "rawtypes" })
public Datasource build() throws FileNotFoundException, ParseException, IOException {
    ExcelDatasource datasource = new ExcelDatasource();
    datasource.name = datasourceName;

    InputStream stream = null;
    try {
        List<Table> tables = new ArrayList<>();

        for (File file : excelFiles) {

            stream = new FileInputStream(file);
            XSSFWorkbook workbook = new XSSFWorkbook(stream);
            int cntSheet = workbook.getNumberOfSheets();
            for (int i = 0; i < cntSheet; i++) {
                String sheetName = workbook.getSheetName(i); // sheet name -> table name

                ExcelTable table = new ExcelTable();

                Matcher matcher = PTN_TABLE_NAME.matcher(sheetName);
                if (matcher.find()) {
                    table.label = matcher.group(3);
                    table.name = matcher.group(1);
                } else {
                    table.label = sheetName;
                    table.name = sheetName;
                }

                XSSFSheet sheet = workbook.getSheetAt(i);
                // Check row size
                int cntRow = sheet.getLastRowNum() + 1;
                if (3 > cntRow) {
                    System.out.println("Skip sheet[" + sheetName + "]. row size < 3");
                    continue;
                }

                // Read Field
                List<ExcelField> fields = new ArrayList<ExcelField>();
                XSSFRow rowLabel = sheet.getRow(0);
                XSSFRow rowName = sheet.getRow(1);
                XSSFRow rowType = sheet.getRow(2);
                for (int col = 0; col < rowLabel.getLastCellNum(); col++) {
                    ExcelField field = readField(col, rowLabel.getCell(col), rowName.getCell(col),
                            rowType.getCell(col));
                    fields.add(field);
                }

                // Read Data
                List<ExcelRecord> records = new ArrayList<ExcelRecord>();
                for (int row = 3; row < cntRow; row++) {
                    XSSFRow xssfrow = sheet.getRow(row);
                    if (!isEmptyRow(xssfrow)) {
                        ExcelRecord record = readData(row, xssfrow, fields);
                        records.add(record);
                    } else {
                        System.out
                                .println("Skip empty row.[table: " + table.getName() + "; row: " + row + ";]");
                    }
                }

                table.fields = (List) fields;
                table.records = (List) records;

                tables.add(table);
            }
        }

        datasource.tables = tables;

    } catch (FileNotFoundException ex) {
        throw ex;
    } catch (ParseException ex) {
        throw ex;
    } catch (IOException ex) {
        throw ex;
    } finally {
        if (null != stream) {
            try {
                stream.close();
            } catch (IOException ex) {
            } finally {
                stream = null;
            }
        }
    }

    return datasource;
}

From source file:org.azkfw.datasource.excel.ExcelDatasourceFactory.java

License:Apache License

/**
 * Excel???// ww w  . j a  va2 s.  co m
 * 
 * @param aName ??
 * @param aStream Excel
 * @return 
 */
@SuppressWarnings({ "unchecked", "rawtypes" })
public static Datasource generate(final String aName, final InputStream aStream)
        throws FileNotFoundException, ParseException, IOException {
    ExcelDatasource datasource = new ExcelDatasource();
    datasource.name = aName;

    try {
        List<Table> tables = new ArrayList<>();

        XSSFWorkbook workbook = new XSSFWorkbook(aStream);
        int cntSheet = workbook.getNumberOfSheets();
        for (int i = 0; i < cntSheet; i++) {
            String sheetName = workbook.getSheetName(i); // sheet name -> table name

            ExcelTable table = new ExcelTable();

            Matcher matcher = PTN_TABLE_NAME.matcher(sheetName);
            if (matcher.find()) {
                table.label = matcher.group(3);
                table.name = matcher.group(1);
            } else {
                table.label = sheetName;
                table.name = sheetName;
            }

            XSSFSheet sheet = workbook.getSheetAt(i);
            // Check row size
            int cntRow = sheet.getLastRowNum() + 1;
            if (3 > cntRow) {
                System.out.println("Skip sheet[" + sheetName + "]. row size < 3");
                continue;
            }

            // Read Field
            List<ExcelField> fields = new ArrayList<ExcelField>();
            XSSFRow rowLabel = sheet.getRow(0);
            XSSFRow rowName = sheet.getRow(1);
            XSSFRow rowType = sheet.getRow(2);
            for (int col = 0; col < rowLabel.getLastCellNum(); col++) {
                ExcelField field = readField(col, rowLabel.getCell(col), rowName.getCell(col),
                        rowType.getCell(col));
                fields.add(field);
            }

            // Read Data
            List<ExcelRecord> records = new ArrayList<ExcelRecord>();
            for (int row = 3; row < cntRow; row++) {
                XSSFRow xssfrow = sheet.getRow(row);
                if (!isEmptyRow(xssfrow)) {
                    ExcelRecord record = readData(row, xssfrow, fields);
                    records.add(record);
                } else {
                    System.out.println("Skip empty row.[table: " + table.getName() + "; row: " + row + ";]");
                }
            }

            table.fields = (List) fields;
            table.records = (List) records;

            tables.add(table);
        }

        datasource.tables = tables;

    } catch (FileNotFoundException ex) {
        throw ex;
    } catch (ParseException ex) {
        throw ex;
    } catch (IOException ex) {
        throw ex;
    } finally {
        if (null != aStream) {
            try {
                aStream.close();
            } catch (IOException ex) {
            }
        }
    }

    return datasource;
}

From source file:org.cvrgrid.hl7.fileparse.PicuDataLoader.java

License:Apache License

public static void main(String[] args) throws Exception {

    PicuDataLoader picuDataLoader = new PicuDataLoader();
    SimpleDateFormat fromUser = new SimpleDateFormat("yyyyMMddHHmmss");
    SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    OpenTSDBConfiguration openTSDBConfiguration = picuDataLoader.getOpenTSDBConfiguration();
    String urlString = openTSDBConfiguration.getOpenTSDBUrl();
    HL7Measurements hl7Measurements = new HL7Measurements();
    HashMap<String, String> measurementNames = hl7Measurements.getMeasurementNames();
    XSSFWorkbook wb = readFile(openTSDBConfiguration.getAwareSupportedParams());
    XSSFSheet sheet = wb.getSheetAt(0);
    for (int r = 1; r < 280; r++) {
        XSSFRow row = sheet.getRow(r);//  ww  w . jav a2 s . c  om
        if (row == null) {
            continue;
        }
        String key = row.getCell(2).getStringCellValue();
        String value = row.getCell(1).getStringCellValue();
        value = value.replaceAll(":", "/");
        measurementNames.put(key, value);
    }
    HashMap<String, PatientInfo> idMatch = new HashMap<String, PatientInfo>();
    File f = new File(openTSDBConfiguration.getIdMatch());
    if (f.exists()) {
        wb = readFile(openTSDBConfiguration.getIdMatch());
        sheet = wb.getSheetAt(0);
        for (int r = 1; r < sheet.getLastRowNum() + 1; r++) {
            XSSFRow row = sheet.getRow(r);
            PatientInfo patInfo = new PatientInfo();
            patInfo.setPicuSubject(row.getCell(1).getBooleanCellValue());
            patInfo.setFirstName(row.getCell(3).getStringCellValue());
            patInfo.setLastName(row.getCell(4).getStringCellValue());
            patInfo.setBirthDateTime(row.getCell(5).getStringCellValue());
            patInfo.setGender(row.getCell(6).getStringCellValue());
            patInfo.setBirthplace(row.getCell(7).getStringCellValue());
            patInfo.setEarliestDataPoint(row.getCell(8).getStringCellValue());
            LinkedList<String> locations = new LinkedList<String>();
            String lSet = row.getCell(10).getStringCellValue();
            lSet = lSet.replaceAll("\\[", "");
            lSet = lSet.replaceAll("\\]", "");
            String[] locationSet = lSet.split(",");
            for (String location : locationSet) {
                locations.add(location.trim());
            }
            patInfo.setLocations(locations);
            LinkedList<String> variables = new LinkedList<String>();
            String vSet = row.getCell(12).getStringCellValue();
            vSet = vSet.replaceAll("\\[", "");
            vSet = vSet.replaceAll("\\]", "");
            String[] variableSet = vSet.split(",");
            for (String variable : variableSet) {
                variables.add(variable.trim());
            }
            patInfo.setVariables(variables);
            idMatch.put(patInfo.getHash(), patInfo);
        }
    }
    System.out.println("Existing Subject Count: " + idMatch.size());
    String processedFile = openTSDBConfiguration.getProcessedFile();
    String rootDir = openTSDBConfiguration.getRootDir();
    ArrayList<String> processedFiles = new ArrayList<String>();
    File processedFileContents = new File(processedFile);
    getProcessedFiles(processedFileContents, processedFiles);
    ArrayList<String> messageFiles = new ArrayList<String>();
    File rootDirContents = new File(rootDir);
    getDirectoryContents(rootDirContents, processedFiles, messageFiles);
    XSSFWorkbook workbook;
    XSSFSheet sheetOut, sheetOut2;
    if (processedFiles.size() > 1) {
        workbook = readFile(openTSDBConfiguration.getIdMatch());
        sheetOut = workbook.getSheetAt(0);
        sheetOut2 = workbook.getSheetAt(1);
    } else {
        workbook = new XSSFWorkbook();
        sheetOut = workbook.createSheet("idMatch");
        sheetOut2 = workbook.createSheet(openTSDBConfiguration.getIdMatchSheet());
    }
    for (String filePath : messageFiles) {
        System.out.println("     File: " + filePath);
        FileReader reader = new FileReader(filePath);

        Hl7InputStreamMessageIterator iter = new Hl7InputStreamMessageIterator(reader);

        while (iter.hasNext()) {
            HashMap<String, String> tags = new HashMap<String, String>();
            Message next = iter.next();
            ORU_R01 oru = new ORU_R01();
            oru.parse(next.encode());
            PatientInfo patInfo = new PatientInfo();
            if (Terser.get(oru.getRESPONSE().getPATIENT().getPID(), 5, 0, 2, 1) != null)
                patInfo.setFirstName(Terser.get(oru.getRESPONSE().getPATIENT().getPID(), 5, 0, 2, 1).trim());
            if (Terser.get(oru.getRESPONSE().getPATIENT().getPID(), 5, 0, 1, 1) != null)
                patInfo.setLastName(Terser.get(oru.getRESPONSE().getPATIENT().getPID(), 5, 0, 1, 1).trim());
            if (Terser.get(oru.getRESPONSE().getPATIENT().getPID(), 7, 0, 1, 1) != null)
                patInfo.setBirthDateTime(
                        Terser.get(oru.getRESPONSE().getPATIENT().getPID(), 7, 0, 1, 1).trim());
            if (Terser.get(oru.getRESPONSE().getPATIENT().getPID(), 8, 0, 1, 1) != null)
                patInfo.setGender(Terser.get(oru.getRESPONSE().getPATIENT().getPID(), 8, 0, 1, 1).trim());
            if (Terser.get(oru.getRESPONSE().getPATIENT().getPID(), 23, 0, 1, 1) != null)
                patInfo.setBirthplace(Terser.get(oru.getRESPONSE().getPATIENT().getPID(), 23, 0, 1, 1).trim());
            LinkedList<String> locations = new LinkedList<String>();
            LinkedList<String> variables = new LinkedList<String>();
            if (idMatch.get(patInfo.getHash()) != null) {
                patInfo = idMatch.get(patInfo.getHash());
                locations = patInfo.getLocations();
                variables = patInfo.getVariables();
            }
            if (!locations
                    .contains(Terser.get(oru.getRESPONSE().getPATIENT().getVISIT().getPV1(), 3, 0, 1, 1))) {
                locations.add(Terser.get(oru.getRESPONSE().getPATIENT().getVISIT().getPV1(), 3, 0, 1, 1));
                if (locations.peekLast().startsWith("ZB04"))
                    patInfo.setPicuSubject(true);
            }
            tags.put("subjectId", patInfo.getHash());
            String time = Terser.get(oru.getRESPONSE().getORDER_OBSERVATION().getOBR(), 7, 0, 1, 1);
            Date timepoint = fromUser.parse(time);
            String reformattedTime = myFormat.format(timepoint);
            if (patInfo.getEarliestDataPoint().equalsIgnoreCase("")) {
                patInfo.setEarliestDataPoint(reformattedTime);
            }
            List<ORU_R01_OBSERVATION> observations = oru.getRESPONSE().getORDER_OBSERVATION()
                    .getOBSERVATIONAll();
            for (ORU_R01_OBSERVATION observation : observations) {
                String seriesName = Terser.get(observation.getOBX(), 3, 0, 1, 1);
                if (measurementNames.get(seriesName) != null) {
                    seriesName = measurementNames.get(seriesName);
                } else {
                    seriesName = seriesName.replaceFirst("\\d", "#");
                    seriesName = measurementNames.get(seriesName);
                }

                StringBuffer buff = new StringBuffer();

                String[] tokens = seriesName.split(" ");
                for (String i : tokens) {
                    i = i.replaceAll("\\(", "");
                    i = i.replaceAll("\\)", "");
                    buff.append(StringUtils.capitalize(i));
                }

                String measurementValue = Terser.get(observation.getOBX(), 5, 0, 1, 1);
                String units = Terser.get(observation.getOBX(), 6, 0, 1, 1);
                if (units != null) {
                    units = units.replaceAll(":", "");
                    units = units.replaceAll("cm_h2o", "cmH2O");
                    units = units.replaceAll("\\(min/m2\\)", "MinPerMeterSquared");
                    units = units.replaceAll("l", "liters");
                    units = units.replaceAll("mliters", "milliliters");
                    units = units.replaceAll("g.m", "gramMeters");
                    units = units.replaceAll("dyn.sec.cm-5", "dyneSecondsPerQuinticCentimeter");
                    units = units.replaceAll("dyneSecondsPerQuinticCentimeter.m2",
                            "dyneSecondsPerQuinticCentimeterPerMeterSquared");
                    units = units.replaceAll("m2", "MeterSquared");
                    units = units.replaceAll("min", "Min");
                    units = units.replaceAll("/", "Per");
                    units = units.replaceAll("%", "percent");
                    units = units.replaceAll("#", "Count");
                    units = units.replaceAll("celiters", "Celsius");
                    units = units.replaceAll("mm\\(hg\\)", "mmHg");
                } else {
                    units = "percent";
                }
                seriesName = "vitals." + StringUtils.uncapitalize(units);
                seriesName += "." + StringUtils.uncapitalize(buff.toString());
                seriesName = seriesName.trim();
                if (!variables.contains(StringUtils.uncapitalize(buff.toString())))
                    variables.add(StringUtils.uncapitalize(buff.toString()));
                IncomingDataPoint dataPoint = new IncomingDataPoint(seriesName, timepoint.getTime(),
                        measurementValue, tags);
                TimeSeriesStorer.storeTimePoint(urlString, dataPoint);
            }
            patInfo.setLocations(locations);
            patInfo.setVariables(variables);
            idMatch.put(patInfo.getHash(), patInfo);
        }
        System.out.println("     Subject Count: " + idMatch.size());
        int rowNum = 0;
        Set<String> keys = idMatch.keySet();
        TreeSet<String> sortedKeys = new TreeSet<String>(keys);
        for (String key : sortedKeys) {
            XSSFRow row = sheetOut.createRow(rowNum);
            XSSFRow row2 = sheetOut2.createRow(rowNum);
            XSSFCell cell, cell2;
            if (rowNum == 0) {
                cell = row.createCell(0);
                cell.setCellValue("Count");
                cell = row.createCell(1);
                cell.setCellValue("PICU Subject?");
                cell = row.createCell(2);
                cell.setCellValue("Hash");
                cell = row.createCell(3);
                cell.setCellValue("First Name");
                cell = row.createCell(4);
                cell.setCellValue("Last Name");
                cell = row.createCell(5);
                cell.setCellValue("Birth Date/Time");
                cell = row.createCell(6);
                cell.setCellValue("Gender");
                cell = row.createCell(7);
                cell.setCellValue("Birthplace");
                cell = row.createCell(8);
                cell.setCellValue("First Time Point");
                cell = row.createCell(9);
                cell.setCellValue("Location Count");
                cell = row.createCell(10);
                cell.setCellValue("Locations");
                cell = row.createCell(11);
                cell.setCellValue("Variable Count");
                cell = row.createCell(12);
                cell.setCellValue("Variables");
                cell2 = row2.createCell(0);
                cell2.setCellValue("Count");
                cell2 = row2.createCell(1);
                cell2.setCellValue("PICU Subject?");
                cell2 = row2.createCell(2);
                cell2.setCellValue("Hash");
                cell2 = row2.createCell(3);
                cell2.setCellValue("First Name");
                cell2 = row2.createCell(4);
                cell2.setCellValue("Last Name");
                cell2 = row2.createCell(5);
                cell2.setCellValue("Birth Date/Time");
                cell2 = row2.createCell(6);
                cell2.setCellValue("Gender");
                cell2 = row2.createCell(7);
                cell2.setCellValue("Birthplace");
                cell2 = row2.createCell(8);
                cell2.setCellValue("First Time Point");
                cell2 = row2.createCell(9);
                cell2.setCellValue("Location Count");
                cell2 = row2.createCell(10);
                cell2.setCellValue("Locations");
                cell2 = row2.createCell(11);
                cell2.setCellValue("Variable Count");
                cell2 = row2.createCell(12);
                cell2.setCellValue("Variables");
            } else {
                cell = row.createCell(0);
                cell.setCellValue(rowNum);
                cell = row.createCell(1);
                cell.setCellValue(idMatch.get(key).isPicuSubject());
                cell = row.createCell(2);
                cell.setCellValue(key);
                cell = row.createCell(3);
                cell.setCellValue(idMatch.get(key).getFirstName());
                cell = row.createCell(4);
                cell.setCellValue(idMatch.get(key).getLastName());
                cell = row.createCell(5);
                cell.setCellValue(idMatch.get(key).getBirthDateTime());
                cell = row.createCell(6);
                cell.setCellValue(idMatch.get(key).getGender());
                cell = row.createCell(7);
                cell.setCellValue(idMatch.get(key).getBirthplace());
                cell = row.createCell(8);
                cell.setCellValue(idMatch.get(key).getEarliestDataPoint());
                cell = row.createCell(9);
                cell.setCellValue(idMatch.get(key).getLocations().size());
                cell = row.createCell(10);
                cell.setCellValue(idMatch.get(key).getLocations().toString());
                cell = row.createCell(11);
                cell.setCellValue(idMatch.get(key).getVariables().size());
                cell = row.createCell(12);
                cell.setCellValue(idMatch.get(key).getVariables().toString());
                if (idMatch.get(key).isPicuSubject()) {
                    cell2 = row2.createCell(0);
                    cell2.setCellValue(rowNum);
                    cell2 = row2.createCell(1);
                    cell2.setCellValue(idMatch.get(key).isPicuSubject());
                    cell2 = row2.createCell(2);
                    cell2.setCellValue(key);
                    cell2 = row2.createCell(3);
                    cell2.setCellValue(idMatch.get(key).getFirstName());
                    cell2 = row2.createCell(4);
                    cell2.setCellValue(idMatch.get(key).getLastName());
                    cell2 = row2.createCell(5);
                    cell2.setCellValue(idMatch.get(key).getBirthDateTime());
                    cell2 = row2.createCell(6);
                    cell2.setCellValue(idMatch.get(key).getGender());
                    cell2 = row2.createCell(7);
                    cell2.setCellValue(idMatch.get(key).getBirthplace());
                    cell2 = row2.createCell(8);
                    cell2.setCellValue(idMatch.get(key).getEarliestDataPoint());
                    cell2 = row2.createCell(9);
                    cell2.setCellValue(idMatch.get(key).getLocations().size());
                    cell2 = row2.createCell(10);
                    cell2.setCellValue(idMatch.get(key).getLocations().toString());
                    cell2 = row2.createCell(11);
                    cell2.setCellValue(idMatch.get(key).getVariables().size());
                    cell2 = row2.createCell(12);
                    cell2.setCellValue(idMatch.get(key).getVariables().toString());
                }
            }
            rowNum++;
        }
    }

    if (messageFiles.size() > 0) {
        try {

            FileOutputStream out = new FileOutputStream(new File(openTSDBConfiguration.getIdMatch()));
            workbook.write(out);
            out.close();
            System.out.println("Excel written successfully...");
            PrintWriter writer = new PrintWriter(rootDir + "done.txt", "UTF-8");
            for (String filePath : processedFiles) {
                writer.println(filePath);
            }
            for (String filePath : messageFiles) {
                writer.println(filePath);
            }
            writer.close();
            System.out.println("done.txt written successfully...");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        System.out.println("Nothing new to process...");
    }
}

From source file:org.dhatim.fastexcel.Correctness.java

License:Apache License

@Test
public void multipleWorksheets() throws Exception {
    int numWs = 10;
    int numRows = 5000;
    int numCols = 6;
    byte[] data = writeWorkbook(wb -> {
        @SuppressWarnings("unchecked")
        CompletableFuture<Void>[] cfs = new CompletableFuture[numWs];
        for (int i = 0; i < cfs.length; ++i) {
            Worksheet ws = wb.newWorksheet("Sheet " + i);
            CompletableFuture<Void> cf = CompletableFuture.runAsync(() -> {
                for (int j = 0; j < numCols; ++j) {
                    ws.value(0, j, "Column " + j);
                    ws.style(0, j).bold().fontSize(12).fillColor(Color.GRAY2).set();
                    for (int k = 1; k <= numRows; ++k) {
                        switch (j) {
                        case 0:
                            ws.value(k, j, "String value " + k);
                            break;
                        case 1:
                            ws.value(k, j, 2);
                            break;
                        case 2:
                            ws.value(k, j, 3L);
                            break;
                        case 3:
                            ws.value(k, j, 0.123);
                            break;
                        case 4:
                            ws.value(k, j, new Date());
                            ws.style(k, j).format("yyyy-MM-dd HH:mm:ss").set();
                            break;
                        case 5:
                            ws.value(k, j, LocalDate.now());
                            ws.style(k, j).format("yyyy-MM-dd").set();
                            break;
                        default:
                            throw new IllegalArgumentException();
                        }//from w  ww .  jav  a2 s.  c o  m
                    }
                }
                ws.formula(numRows + 1, 1, "=SUM(" + ws.range(1, 1, numRows, 1).toString() + ")");
                ws.formula(numRows + 1, 2, "=SUM(" + ws.range(1, 2, numRows, 2).toString() + ")");
                ws.formula(numRows + 1, 3, "=SUM(" + ws.range(1, 3, numRows, 3).toString() + ")");
                ws.formula(numRows + 1, 4, "=AVERAGE(" + ws.range(1, 4, numRows, 4).toString() + ")");
                ws.style(numRows + 1, 4).format("yyyy-MM-dd HH:mm:ss").set();
                ws.formula(numRows + 1, 5, "=AVERAGE(" + ws.range(1, 5, numRows, 5).toString() + ")");
                ws.style(numRows + 1, 5).format("yyyy-MM-dd").bold().italic().fontColor(Color.RED)
                        .fontName("Garamond").fontSize(new BigDecimal("14.5")).horizontalAlignment("center")
                        .verticalAlignment("top").wrapText(true).set();
                ws.range(1, 0, numRows, numCols - 1).style().borderColor(Color.RED).borderStyle("thick")
                        .shadeAlternateRows(Color.RED).set();
            });
            cfs[i] = cf;
        }
        try {
            CompletableFuture.allOf(cfs).get();
        } catch (InterruptedException | ExecutionException ex) {
            throw new RuntimeException(ex);
        }
    });

    // Check generated workbook with Apache POI
    XSSFWorkbook xwb = new XSSFWorkbook(new ByteArrayInputStream(data));
    assertThat(xwb.getActiveSheetIndex()).isEqualTo(0);
    assertThat(xwb.getNumberOfSheets()).isEqualTo(numWs);
    for (int i = 0; i < numWs; ++i) {
        assertThat(xwb.getSheetName(i)).isEqualTo("Sheet " + i);
        XSSFSheet xws = xwb.getSheetAt(i);
        assertThat(xws.getLastRowNum()).isEqualTo(numRows + 1);
        for (int j = 1; j <= numRows; ++j) {
            assertThat(xws.getRow(j).getCell(0).getStringCellValue()).isEqualTo("String value " + j);
        }
    }

}

From source file:org.exoplatform.services.document.impl.MSXExcelDocumentReader.java

License:Open Source License

/**
 * Returns only a text from .xlsx file content.
 * //from   www  . j a va2 s  . c  o  m
 * @param is an input stream with .xls file content.
 * @return The string only with text from file content.
 */
public String getContentAsText(final InputStream is) throws IOException, DocumentReadException {
    if (is == null) {
        throw new IllegalArgumentException("InputStream is null.");
    }

    StringBuilder builder = new StringBuilder("");
    SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);

    try {
        if (is.available() == 0) {
            return "";
        }

        XSSFWorkbook wb;
        try {
            wb = SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<XSSFWorkbook>() {
                public XSSFWorkbook run() throws Exception {
                    return new XSSFWorkbook(is);
                }
            });
        } catch (IOException e) {
            throw new DocumentReadException("Can't open spreadsheet.", e);
        } catch (OpenXML4JRuntimeException e) {
            return builder.toString();
        }
        for (int sheetNum = 0; sheetNum < wb.getNumberOfSheets(); sheetNum++) {
            XSSFSheet sheet = wb.getSheetAt(sheetNum);
            if (sheet != null) {
                for (int rowNum = sheet.getFirstRowNum(); rowNum <= sheet.getLastRowNum(); rowNum++) {
                    XSSFRow row = sheet.getRow(rowNum);

                    if (row != null) {
                        int lastcell = row.getLastCellNum();
                        for (int k = 0; k < lastcell; k++) {
                            XSSFCell cell = row.getCell(k);
                            if (cell != null) {
                                switch (cell.getCellType()) {
                                case XSSFCell.CELL_TYPE_NUMERIC: {
                                    double d = cell.getNumericCellValue();
                                    if (isCellDateFormatted(cell)) {
                                        Date date = HSSFDateUtil.getJavaDate(d);
                                        String cellText = dateFormat.format(date);
                                        builder.append(cellText).append(" ");
                                    } else {
                                        builder.append(d).append(" ");
                                    }
                                    break;
                                }
                                case XSSFCell.CELL_TYPE_FORMULA:
                                    builder.append(cell.getCellFormula().toString()).append(" ");
                                    break;
                                case XSSFCell.CELL_TYPE_BOOLEAN:
                                    builder.append(cell.getBooleanCellValue()).append(" ");
                                    break;
                                case XSSFCell.CELL_TYPE_ERROR:
                                    builder.append(cell.getErrorCellValue()).append(" ");
                                    break;
                                case XSSFCell.CELL_TYPE_STRING:
                                    builder.append(cell.getStringCellValue().toString()).append(" ");
                                    break;
                                default:
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
    } finally {
        if (is != null) {
            try {
                is.close();
            } catch (IOException e) {
                if (LOG.isTraceEnabled()) {
                    LOG.trace("An exception occurred: " + e.getMessage());
                }
            }
        }
    }
    return builder.toString();
}

From source file:org.hlc.utility.excel.ExcelInputHandler.java

License:Apache License

/**
 * Import excel./*from   w  w w  .j a  v  a2 s .co m*/
 *
 * @param <T> the generic type
 * @param type the type
 * @param in the in
 * @return the list
 */
@SuppressWarnings("rawtypes")
public <T> List<T> importExcel2007(Class<T> type, InputStream in) {

    Excel excelAnn = type.getAnnotation(Excel.class);
    if (excelAnn == null) {
        throw new ExcelException("The Class <" + type + "> did not Excel");
    }

    List<T> list = new ArrayList<T>();

    Map<String, Method> mapping = new LinkedHashMap<String, Method>();
    Map<String, TypeHandler> converters = new HashMap<String, TypeHandler>();

    try {
        // Step1 ??
        Field fileds[] = type.getDeclaredFields();
        for (int i = 0; i < fileds.length; i++) {
            Field field = fileds[i];
            ExcelColumn column = field.getAnnotation(ExcelColumn.class);
            if (column != null) {
                Method setMethod = ReflectionUtils.setValueMethod(field, type);
                mapping.put(column.value(), setMethod);
                if (column.converter() != TypeHandler.class) {
                    converters.put(setMethod.getName().toString(), column.converter().newInstance());
                } else {
                    converters.put(setMethod.getName().toString(),
                            TypeHandlerFactory.getHandler(field.getType()));
                }
            }
        }

        T temp = null;
        XSSFWorkbook hssfWorkbook = new XSSFWorkbook(in);
        for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
            XSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
            if (hssfSheet == null) {
                continue;
            }

            // ?Sheet
            List<Method> methods = new ArrayList<Method>();
            for (int rowNum = 0; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {

                XSSFRow hssfRow = hssfSheet.getRow(rowNum);
                if (hssfRow == null) {
                    continue;
                }

                // ?
                if (rowNum == 0) {
                    for (int cellNum = 0; cellNum < hssfRow.getLastCellNum(); cellNum++) {
                        String title = hssfRow.getCell(cellNum).getStringCellValue();
                        Method me = mapping.get(title);
                        if (me == null) {
                            continue;
                        }
                        methods.add(me);
                    }
                    continue;
                }

                temp = type.newInstance();
                for (int cellNum = 0; cellNum < methods.size(); cellNum++) {
                    XSSFCell xh = hssfRow.getCell(cellNum);
                    if (xh == null) {
                        continue;
                    }
                    Method m = methods.get(cellNum);
                    TypeHandler handler = converters.get(m.getName());
                    if (handler == null) {
                        continue;
                    }
                    xh.setCellType(Cell.CELL_TYPE_STRING);
                    String value = xh.getStringCellValue();
                    if (StringUtils.isEmpty(value)) {
                        continue;
                    }
                    Object val = null;
                    try {
                        val = handler.stringToType(value);
                    } catch (Exception e) {
                        throw new ExcelException("" + (numSheet + 1) + "" + (rowNum + 1)
                                + "" + (cellNum + 1) + "" + value + "??");
                    }
                    methods.get(cellNum).invoke(temp, val);
                }
                list.add(temp);
            }
        }
    } catch (Exception e) {
        throw new ExcelException("Excel processing error?", e);
    }
    return list;
}

From source file:org.kitodo.production.plugin.importer.massimport.PicaMassImport.java

License:Open Source License

private List<Record> getRecordsForXLSX(InputStream xls) throws IOException {
    List<Record> records = new ArrayList<>();

    XSSFWorkbook wb = new XSSFWorkbook(xls);
    XSSFSheet sheet = wb.getSheetAt(0); // first sheet
    // loop over all rows
    for (int j = 0; j <= sheet.getLastRowNum(); j++) {
        // loop over all cells
        XSSFRow row = sheet.getRow(j);//from   w  w  w .j a v a 2s .c o m
        if (Objects.nonNull(row)) {
            for (int i = 0; i < row.getLastCellNum(); i++) {
                XSSFCell cell = row.getCell(i);
                // changing all cell types to String
                cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                Record record = changeCellTypeToString(cell, i, j);
                if (Objects.nonNull(record)) {
                    records.add(record);
                }
            }
        }
    }

    return records;
}

From source file:org.kuali.test.runner.output.PoiHelper.java

License:Educational Community License

private void copySheets(XSSFSheet newSheet, XSSFSheet sheet) {
    int maxColumnNum = 0;
    Map<Integer, XSSFCellStyle> styleMap = new HashMap<Integer, XSSFCellStyle>();

    int mergedReqionsCount = sheet.getNumMergedRegions();

    for (int i = 0; i < mergedReqionsCount; ++i) {
        newSheet.addMergedRegion(sheet.getMergedRegion(i));
    }//from   w  w w. ja  va 2  s . c o m

    for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++) {
        XSSFRow srcRow = sheet.getRow(i);
        XSSFRow destRow = newSheet.createRow(i);
        if (srcRow != null) {
            copyRow(srcRow, destRow, styleMap);
            if (srcRow.getLastCellNum() > maxColumnNum) {
                maxColumnNum = srcRow.getLastCellNum();
            }
        }
    }
    for (int i = 0; i <= maxColumnNum; i++) {
        newSheet.setColumnWidth(i, sheet.getColumnWidth(i));
    }
}

From source file:org.openepics.names.ui.export.ExcelExport.java

License:Open Source License

private Row appendRow(XSSFSheet sheet) {
    return sheet.createRow(sheet.getRow(0) == null ? 0 : sheet.getLastRowNum() + 1);
}

From source file:org.ramadda.util.XlsUtil.java

License:Apache License

/**
 * _more_//w w  w  . j  a  v  a2s .  co m
 *
 * @param filename _more_
 *
 * @return _more_
 */
public static String xlsxToCsv(String filename) {
    try {

        StringBuffer sb = new StringBuffer();
        InputStream myxls = IOUtil.getInputStream(filename, XlsUtil.class);
        XSSFWorkbook wb = new XSSFWorkbook(myxls);
        XSSFSheet sheet = wb.getSheetAt(0);
        boolean seenNumber = false;
        for (int rowIdx = sheet.getFirstRowNum(); rowIdx <= sheet.getLastRowNum(); rowIdx++) {
            XSSFRow row = sheet.getRow(rowIdx);
            if (row == null) {
                continue;
            }

            short firstCol = row.getFirstCellNum();
            for (short col = firstCol; col < row.getLastCellNum(); col++) {
                XSSFCell cell = row.getCell(col);
                if (cell == null) {
                    break;
                }
                String value = cell.toString();
                if (col > firstCol) {
                    sb.append(",");
                }
                sb.append(clean(value));
            }
            sb.append("\n");
        }

        return sb.toString();
    } catch (Exception exc) {
        throw new RuntimeException(exc);

    }
}