Я скопировал и вставил ваш код, чтобы увидеть, что это за ошибка.К сожалению, я не мог видеть вашу ошибку.Но после поиска ошибки я нашел несколько ответов ..
Это исключение произошло, потому что API POI для таблицы Excel записывает в таблицу Excel несколько раз.И каждый раз требуется новый экземпляр FileOutputStream поверх того же объекта File.
Чтобы решить эту проблему, сначала записали все строки в экземпляр рабочей книги, а затем записали в рабочую книгу, используя FileOutputStream.
https://tjavadeeps.wordpress.com/2015/04/14/org-apache-poi-openxml4j-exceptions-openxml4jruntimeexception-fail-to-save-an-error-occurs-while-saving-the-package/
org.apache.poi.openxml4j.exceptions.OpenXML4JRuntimeException: не удалось сохранить
Надеюсь, вы получите подсказку.
Далее я сделал свой текстовый файл и сохранил в Excel, как то, что ты сделал, и это работает,
package excelTest;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.LinkedList;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class readExcel {
public static void main(String[] args) throws IOException {
LinkedList<String> llist = new LinkedList<>();
String[] data = null;
String replace = "";
XSSFWorkbook workBook = new XSSFWorkbook();
FileOutputStream outstream = new FileOutputStream( "C:\\Users\\Desktop\\data.xls");
XSSFSheet spreadSheet = workBook.createSheet("Clean");
/*
* MyFile.txt
----------------------
0
IND
USA
LOVE
----------------------
*/
try (BufferedReader br = new BufferedReader(new FileReader( "C:\\Users\\Desktop\\myFile.txt"))) {
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
llist.add(sCurrentLine);
}
} catch (IOException e) {
e.printStackTrace();
}
String empid1 = "";
String fname = "";
String ccode1 = "";
System.out.println("llist.get(i)"+llist.get(0)+" "+llist.get(1));
for (int i = 0; i < llist.size(); i++){
System.out.println(llist.get(i));
}
empid1 = llist.get(1); //IND
fname = llist.get(2); //USA
ccode1 =llist.get(3); //LOVE
if (fname.equals("IND")) {
replace = fname.replaceAll("IND", "IN");
ccode1 = replace;
} else if (fname.equals("USA")) {
replace = fname.replaceAll("USA", "US");
ccode1 = replace; //'LOVE' CHANGE TO US. (IF YOU WANT TO CHANGE TO US IN HERE-> fname=fname.replaceAll("USA","US");
} else {
ccode1 = fname; //'LOVE' CHANGE TO USA AGAIN.
}
XSSFRow row = spreadSheet.createRow(0);
XSSFCell cell = row.createCell(0);
cell.setCellValue(empid1);
cell = row.createCell(1);
cell.setCellValue(fname);
cell = row.createCell(2);
cell.setCellValue(ccode1);
workBook.write(outstream);
}
}