Я пытаюсь написать код, который добавит данные в уже существующую таблицу Excel. Однако, когда я запускаю этот код, файл становится поврежденным.Добавление существующего файла excel с использованием XSSFWorkbook
В случае этого кода я пытаюсь добавить электронную таблицу, но я пробовал с ячейками в существующем листе без каких-либо ошибок и все той же ошибки. Я что-то упускаю, похоже, что я создаю Excel, добавляя некоторые данные, а затем пишу, закрывая его. а затем просто добавить новый лист в существующую книгу и снова записать его в поток.
public class PlayWithExcel {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Workbook wb = new XSSFWorkbook();
XSSFSheet ws = (XSSFSheet) wb.createSheet("Initial Data");
XSSFSheet ws1 = (XSSFSheet) wb.createSheet("Cross Referenced");
XSSFSheet ws2 = (XSSFSheet) wb.createSheet("HPD");
Row row = ws.createRow(0);
row.createCell(0).setCellValue("Value");
row = ws1.createRow(2);
row.createCell(3).setCellValue("Address");
try {
String path = "C:/Users/Jenny/Desktop/Test.xlsx";
FileOutputStream out = new FileOutputStream(path);
wb.write(out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
XSSFSheet ws3 = (XSSFSheet) wb.createSheet("another sheet");
try {
String path = "C:/Users/Jenny/Desktop/Test.xlsx";
FileOutputStream out = new FileOutputStream(path);
wb.write(out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Если у вас есть файл, вы гораздо лучше Открывание, что непосредственно, а не идти через InputStream см [документацию POI подробную информацию о том, почему] (http://poi.apache.org/ таблица/quick-guide.html # FileInputStream) – Gagravarr
Sankumarsingh, thx so much !!! это действительно сработало! но я, похоже, не понимаю логики того, что я только что сделал. Как InputStream помогает мне, это для чтения файла. было бы полезно, если бы вы могли объяснить. – Jenny
@ Leah-DinaCharnetskaya: Первоначально вы создали новую книгу, поэтому не нужно загружать какой-либо входной поток, но когда вы написали какую-либо книгу Excel и если хотите снова работать над этой книгой, вам нужно снова загрузить ее. Кстати, использование потока входных/выходных файлов немного медленное и память потребляет. Было бы лучше использовать файл. – Sankumarsingh