저는 Java에서 새로 도입되었으며 동적 데이터를 Excel 파일에 삽입하는 데 문제가 있습니다. 다음은 코드입니다. Excel 파일을 삭제하고 프로그램을 다시 실행하면. 그러면 새 파일을 만들고 다음 데이터를 삽입합니다. (hello, goodbye, true, date). 첫 번째 실행 중에도 프로그램에서 다음 데이터를 삽입 할 수 있지만 다음 실행을 수행 할 때 데이터를 삽입 할 수 없습니다 다음 줄에 저장하십시오. 파일 존재 여부를 확인하는 다음 코드는 다음과 같습니다. 나는 내가이 코드를 며칠 동안 고민하고있을 때 나를 도울 사람을 얻을 수 있기를 바랍니다. Java를 사용하여 Excel에 동적으로 데이터 삽입
if (file.exists()) {
try{
fout = new FileOutputStream(fileName, true);
fin = new FileInputStream(fileName);
lPOIfs = new POIFSFileSystem(fin);
workbook = new HSSFWorkbook(lPOIfs);
worksheet = workbook.getSheet("POI Worksheet");
for (int i=0; i<workbook.getNumberOfSheets(); i++) {
System.out.println(workbook.getSheetName(i));
}
HSSFSheet sheet = workbook.getSheetAt(0);
last = sheet.getLastRowNum();
}catch (IOException e) {
e.printStackTrace();
}catch (NullPointerException e){
e.printStackTrace();
}
} else {
//create new file
try{
fout = new FileOutputStream(file);
}catch (IOException e) {
e.printStackTrace();
}
workbook = new HSSFWorkbook();
worksheet = workbook.createSheet("POI Worksheet");
}
이
라인의 마지막 번호를 확인하는 코드입니다 :if(last != 0){
last = worksheet.getLastRowNum()+1;
}else{
last = worksheet.getLastRowNum();
}
이 쓰기 기능의 전체 코드입니다 :
public void writeExcel(){
String fileName = "C:\\Users\\blslyeoh\\Documents\\NetBeansProjects\\JavaApplication1\\poi-test.xls";
try {
int last=0;
File file = new File(fileName);
FileInputStream fin = null;
HSSFWorkbook workbook = null;
HSSFSheet worksheet = null;
FileOutputStream fout = null;
POIFSFileSystem lPOIfs = null;
if (file.exists()) {
try{
fout = new FileOutputStream(fileName, true);
fin = new FileInputStream(fileName);
lPOIfs = new POIFSFileSystem(fin);
workbook = new HSSFWorkbook(lPOIfs);
worksheet = workbook.getSheet("POI Worksheet");
for (int i=0; i<workbook.getNumberOfSheets(); i++) {
System.out.println(workbook.getSheetName(i));
}
HSSFSheet sheet = workbook.getSheetAt(0);
last = sheet.getLastRowNum();
}catch (IOException e) {
e.printStackTrace();
}catch (NullPointerException e){
e.printStackTrace();
}
} else {
//create new file
try{
fout = new FileOutputStream(file);
}catch (IOException e) {
e.printStackTrace();
}
workbook = new HSSFWorkbook();
worksheet = workbook.createSheet("POI Worksheet");
}
// index from 0,0... cell A1 is cell(0,0)
if(last != 0){
last = worksheet.getLastRowNum()+1;
}else{
last = worksheet.getLastRowNum();
}
HSSFRow row = worksheet.createRow(last);
HSSFCell cellA1 = row.createCell((short)0);
cellA1.setCellValue("hello");
HSSFCellStyle cellStyle = workbook.createCellStyle();
//cellStyle.setFillForegroundColor(HSSFColor.GOLD.index);
//cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
//cellA1.setCellStyle(cellStyle);
HSSFCell cellB1 = row.createCell((short) 1);
cellB1.setCellValue("goodbye");
//cellStyle = workbook.createCellStyle();
//cellStyle.setFillForegroundColor(HSSFColor.LIGHT_CORNFLOWER_BLUE.index);
//cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
//cellB1.setCellStyle(cellStyle);
HSSFCell cellC1 = row.createCell((short) 2);
cellC1.setCellValue(true);
HSSFCell cellD1 = row.createCell((short) 3);
cellD1.setCellValue(new Date());
cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat
.getBuiltinFormat("m/d/yy h:mm"));
cellD1.setCellStyle(cellStyle);
workbook.write(fout);
fout.flush();
fout.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
스택 트레이스가 있습니까? 어떤 오류가 발생 했습니까? 그것들을 게시하는 것이 도움이 될 것입니다. – jcd
이 URL에 대한 도움에 감사드립니다. http://www.codepool.biz/excel/how-to-read-and-write-excel-files-in-java.html 이것이 모두에게 도움이되기를 바랍니다. 그건 그렇고, fout = new FileOutputStream (fileName, true); fout = new FileOutputStream (fileName);으로 변경해야합니다. –
btw, 감사합니다. @jcd에 –