org.apache.any23.plugin.officescraper.XSSFWorkbookTest.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.any23.plugin.officescraper.XSSFWorkbookTest.java

Source

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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 org.apache.any23.plugin.officescraper;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.InputStream;

/**
 * General test to verify usability of the {@link XSSFWorkbook} class.
 *
 * @author Michele Mostarda (mostarda@fbk.eu)
 */
public class XSSFWorkbookTest {

    private static final Logger logger = LoggerFactory.getLogger(XSSFWorkbookTest.class);

    @Test
    public void testXLSXFormatAccess() throws IOException {
        verifyResource("test1-workbook.xlsx");
    }

    @Test
    public void testXLSFormatAccess() throws IOException {
        verifyResource("test2-workbook.xls");
    }

    private void verifyResource(String resource) throws IOException {
        final InputStream document = this.getClass().getResourceAsStream(resource);
        final Workbook wb;
        if (resource.endsWith(".xlsx")) {
            wb = new XSSFWorkbook(document);
        } else if (resource.endsWith("xls")) {
            wb = new HSSFWorkbook(document);
        } else {
            throw new IllegalArgumentException("Unsupported extension for resource " + resource);
        }
        Assert.assertEquals(2, wb.getNumberOfSheets());
        Sheet sheet;
        for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
            sheet = wb.getSheetAt(sheetIndex);
            int rowcount = 0;
            for (Row row : sheet) {
                rowcount++;
                int cellcount = 0;
                for (Cell cell : row) {
                    cellcount++;
                    logger.debug(String.format("cell [%d, %d]: %s", cell.getRowIndex(), cell.getColumnIndex(),
                            cell.getStringCellValue()));
                    verifyContent(sheetIndex, cell.getRowIndex(), cell.getColumnIndex(), cell.getStringCellValue());
                }
                Assert.assertEquals(3, cellcount);
            }
            Assert.assertEquals(3, rowcount);
        }
    }

    private void verifyContent(int sheet, int row, int col, String content) {
        Assert.assertEquals(String.format("%s %d.%d", sheet == 0 ? "a" : "b", row + 1, col + 1), content);
    }

}