Я пытаюсь сохранить ввод, но InvalidFormatException был брошен - PullRequest
0 голосов
/ 03 июня 2019

Я хотел бы сохранить данные в существующем файле Excel. После этого попробуйте вывести что-то в этот файл. Но я получил ошибку.

Я искал ответ, но ни один из них не соответствует моей ситуации.


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;

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

public class TryHyperlink{

    public static void main(String[] args) {
        File in = new File("D:\\Test1.xlsx");

        try {
            FileInputStream fin = new FileInputStream(in);
//read input
            XSSFWorkbook wb;
            wb = new XSSFWorkbook(fin);//The StackTrace shows that the error is here
            XSSFSheet sheet = wb.getSheetAt(0);
            Iterator<Row> rowItr = sheet.iterator();
//iterate through every row and cell
            while(rowItr.hasNext()) {
                Row row = rowItr.next();
                Iterator<Cell> cellItr = row.iterator();
                while(cellItr.hasNext()) {
                    Cell cell = cellItr.next();

                }
            }
            fin.close();
//close the input stream so output stream can write
            FileOutputStream fout = new FileOutputStream(in);
            wb.write(fout);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Edit: После обращения к комментарию Алекса Рихтера я закрыл выходной поток, и ошибка исчезла. Теперь выходит другая ошибка:
ВНИМАНИЕ: произошла недопустимая операция доступа с отражением и т. Д. (ссылка на фотографию внизу вопроса)

package net.excel;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;

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

public class TryHyperlink{

    public static void main(String[] args) {
        File in = new File("D:\\penril.xlsx");

        try {
            FileInputStream fin = new FileInputStream(in);

            XSSFWorkbook wb;
            wb = new XSSFWorkbook(fin);
            XSSFSheet sheet = wb.getSheetAt(0);
            Iterator<Row> rowItr = sheet.iterator();

            while(rowItr.hasNext()) {
                Row row = rowItr.next();
                Iterator<Cell> cellItr = row.iterator();
                while(cellItr.hasNext()) {
                    Cell cell = cellItr.next();
                    cell.setCellValue(cell.getNumericCellValue());
                }
            }
            fin.close();
            FileOutputStream fout = new FileOutputStream(in);
            wb.write(fout);
            fout.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
```package net.excel;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;

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

public class TryHyperlink{

    public static void main(String[] args) {
        File in = new File("D:\\penril.xlsx");

        try {
            FileInputStream fin = new FileInputStream(in);

            XSSFWorkbook wb;
            wb = new XSSFWorkbook(fin);
            XSSFSheet sheet = wb.getSheetAt(0);
            Iterator<Row> rowItr = sheet.iterator();

            while(rowItr.hasNext()) {
                Row row = rowItr.next();
                Iterator<Cell> cellItr = row.iterator();
                while(cellItr.hasNext()) {
                    Cell cell = cellItr.next();
                    cell.setCellValue(cell.getNumericCellValue());
                }
            }
            fin.close();
            FileOutputStream fout = new FileOutputStream(in);
            wb.write(fout);
            fout.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}```


  [1]: https://i.stack.imgur.com/WTOn3.png
...