标签: xssf

线程“main”中的异常 java.lang.IllegalArgumentException:工作表索引 (0) 超出范围 (0..-1)

我想使用 apache poi api 在 java 中读取 2010 excel 文件......但它给了我一个错误线程“main”中的异常 java.lang.IllegalArgumentException: Sheet index (0) is out of range (0..-1 ) 我正在使用 xssf 但如果我想从旧格式的 excel 中获取数据,那么它可以通过 HSSF 正常工作..我不知道 XSSF 发生了什么..这是我的代码..请帮助我。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 * This java program is used to read the data from a Excel file and display them
 * on the console output.
 * 
 * @author dhanago
 */
public …
Run Code Online (Sandbox Code Playgroud)

java excel poi-hssf xssf

1
推荐指数
1
解决办法
1万
查看次数

POI-XSSF:从公式单元格缓存的值中读取格式化的值

在我的excel工作表中,许多单元格包含公式,当我用Apache POI阅读excel时,我不想重新计算这些公式。

我这样做的方式:

if(cell.getCellType() == XSSFCell.CELL_TYPE_FORMULA) {

    //System.out.println("Formula is " + cell.getCellFormula());
    switch(cell.getCachedFormulaResultType()) {
        case XSSFCell.CELL_TYPE_NUMERIC:

            System.out.print(cell.getNumericCellValue() +" ");

            break;
        case XSSFCell.CELL_TYPE_STRING:
            System.out.print(cell.getRichStringCellValue()+" ");
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

这有助于我获得单元格中的原始值。例如,如果单元格的值为19.5%,这将为我提供0.195456。我想获取格式化的值。

一种获取格式化值的方法是:

DataFormatter formatter = new DataFormatter();

System.out.print(formatter.formatCellValue(cell));
Run Code Online (Sandbox Code Playgroud)

这对于常规单元格效果很好,但是对于具有公式的单元格,它实际上会获取公式字符串并显示它,即,它不会获取缓存的值并对其进行格式化,而只是返回公式字符串。

从CELL_TYPE_FORMULA检索值后,是否可以格式化该值

java excel apache-poi xssf

1
推荐指数
1
解决办法
1838
查看次数

无法在XSSFCell Apache POI中设置自定义颜色

我正在尝试为xssfcell设置一些自定义的颜色(从hexcode或rgb值开始),但是即使我提供了其他颜色,单元的颜色也正在变成黑色。我尝试通过以下方式进行操作:

File xlSheet = new File("C:\\Users\\IBM_ADMIN\\Downloads\\Excel Test\\Something3.xlsx");
    System.out.println(xlSheet.createNewFile());
    FileOutputStream fileOutISPR = new FileOutputStream("C:\\Users\\IBM_ADMIN\\Downloads\\Excel Test\\Something3.xlsx");
    XSSFWorkbook isprWorkbook = new XSSFWorkbook();
    XSSFSheet sheet = isprWorkbook.createSheet("TEST");
    XSSFRow row = sheet.createRow(0);
    XSSFCellStyle cellStyle = isprWorkbook.createCellStyle();
    byte[] rgb = new byte[3];
    rgb[0] = (byte) 24; // red
    rgb[1] = (byte) 22; // green
    rgb[2] = (byte) 219; // blue
    XSSFColor myColor = new XSSFColor(rbg);
    cellStyle.setFillForegroundColor(myColor);
    cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
    cellStyle.setAlignment(HorizontalAlignment.CENTER);
    XSSFCell cell = row.createCell(0);
    cell.setCellValue("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum …
Run Code Online (Sandbox Code Playgroud)

java excel apache-poi xssf

1
推荐指数
1
解决办法
1392
查看次数

Apache的POI.XSSF.工作簿

我已经使用XLS,但今天我正在尝试新的 - xlsx.对于XLS,我只需要一个库,与XLSX(四个库)相比.此外,我得到整个包错误.为什么会这样?

主要:

    public class Start {
    public static void main(String[] args) {
        ReaderXls read = new ReaderXls();
        List<List<String>>  listAsu = new ArrayList<List<String>>(read.ReaderXls("Sprav_oborudovania",0, 10, 30));
        System.out.println(listAsu); }
}
Run Code Online (Sandbox Code Playgroud)

代码:

package workhere;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReaderXls {
    public List<List<String>> ReaderXls(String sfilename,int firstColumn, int columnsCount, int rowsCount){
        int lastColumn=firstColumn+columnsCount;
        List<List<String>> rowsContent = new ArrayList<List<String>>();
        try ( FileInputStream fileInputStream = new FileInputStream("C:\\Users\\student3\\"+sfilename+".xlsx");)
        {//Get …
Run Code Online (Sandbox Code Playgroud)

java excel xlsx apache-poi xssf

0
推荐指数
1
解决办法
8105
查看次数

Excel单元格样式问题

我使用下面的代码从XLSX文件中获取日期值.对于某些xlsx文件,这是完全正常的.但它没有提供xlsx文件中的确切日期格式.此问题适用于某些文件.

例如; 我有这样的约会,21/01/2016 (dd/mm/yyyy) 但在阅读之后,它给出了日期01/21/16(mm/dd/yy)

有没有其他方法可以获得cellstyle?

是xlsx文件的问题??

String dateFmt = cell.getCellStyle().getDataFormatString();

if (DateUtil.isCellDateFormatted(cell)) {
    double val = cell.getNumericCellValue();
    Date date = DateUtil.getJavaDate(val);

    String dateFmt = cell.getCellStyle().getDataFormatString();

    System.out.println("dateFmt "+dateFmt);

    value = new CellDateFormatter(dateFmt).format(date);

    System.out.println("Date "+value);

}
Run Code Online (Sandbox Code Playgroud)

java excel apache-poi xssf

0
推荐指数
1
解决办法
1816
查看次数

Apache POI 锁定单元格但允许调整列大小

我通过创建一个 Excel 文件Apache POI XSSF,并使用密码锁定工作表,以便用户无法更改前两行和前五列的值(我锁定工作表并允许编辑其他单元格)。一切正常,唯一的问题是用户无法调整列的大小,因此他既无法更改也无法调整列的大小以读取所有单元格值。即使工作表受到保护,是否可以允许调整列大小?这是我的配置

workbook = new XSSFWorkbook();
sheet = workbook.createSheet("Sheet1");
sheet.protectSheet("passwordExcel"); 
unlockedNumericStyle = workbook.createCellStyle(); 
unlockedNumericStyle.setLocked(false);
// Format cell for date
dateStyle = workbook.createCellStyle();
CreationHelper createHelper = workbook.getCreationHelper();
dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("dd/mm/yyyy"));
sheet.autoSizeColumn(1);
Run Code Online (Sandbox Code Playgroud)

我读过,lockFormatCell()但我不明白它是否可以帮助我。谢谢

java excel password-protection apache-poi xssf

0
推荐指数
1
解决办法
2812
查看次数

Apache POI 加密的 xlsx 无法在 excel 中打开

我正在尝试使用 Apache POI 创建加密的 xlsx 文件。这是我的代码,它运行得很好:

public static void Encrypt(String data) throws IOException, GeneralSecurityException, InvalidFormatException {

    Workbook wb = new XSSFWorkbook();
    Sheet sheet1 = wb.createSheet("sheet1");
    sheet1.createRow(0).createCell(0).setCellValue(data);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    wb.write(bos);
    bos.close();

    POIFSFileSystem fs = new POIFSFileSystem();
    EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile, CipherAlgorithm.aes256, HashAlgorithm.sha512, 256, 16, ChainingMode.cbc);
    Encryptor enc = info.getEncryptor();
    enc.confirmPassword("pass");

    OPCPackage opc = OPCPackage.open(new ByteArrayInputStream(bos.toByteArray()));
    OutputStream os = enc.getDataStream(fs);
    opc.save(os);
    opc.close();

    FileOutputStream fos = new FileOutputStream("provawrite.xlsx");
    fs.writeFilesystem(fos);
    fos.close();
}
Run Code Online (Sandbox Code Playgroud)

问题是当我打开生成的文件时,excel 一直抱怨文件已损坏。我还尝试EncryptionInfo使用不同的加密模式更改实例化,但没有任何变化。

有人可以给我一个提示吗?!?

java excel apache-poi xssf

0
推荐指数
1
解决办法
2096
查看次数

标签 统计

excel ×7

java ×7

xssf ×7

apache-poi ×6

password-protection ×1

poi-hssf ×1

xlsx ×1