Ich schreibe ein Programm, um Mitarbeiter Sitzplätze mit Java und Apache Poi zu verfolgen, um eine Excel-Tabelle zu schreiben. Das Programm wird den Benutzer auffordern, die Schreibtischnummer, den Angestelltennamen und die Anzahl der Angestellten, die an diesem Schreibtisch sitzen, einzugeben. Mein Problem ist, dass das Programm nur die letzte Information schreibt, die vom Benutzer eingegeben wurde, und löscht, was zuvor in dieser Zeile eingegeben wurde. Wie kann ich behalten, was in der ersten Zeile des Excel-Blattes eingegeben wurde? Ich habe es in einer Schleife, wo der Benutzer aufgefordert wird, die Sitzplatzinformationen aufgefordert werden, bis der Benutzer EXIT eintritt. Ich möchte, dass jedes Mal, wenn neue Informationen eingegeben werden, eine Zeile inkrementiert wird.Wie kann ich die Zeilen in Excel erhöhen mit Apache poi
Dies ist, was ich bisher:
import java.util.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.*;
import java.io.*;
public class EmployeeSeatingRep {
public static void main(String[] args){
String deskNumber = "";
String employeeName = "";
int empsAtDesk = 0;
boolean keepRunning = true;
//Blank workbook
HSSFWorkbook workbook = new HSSFWorkbook();
//Blank sheet
HSSFSheet sheet = workbook.createSheet("Seating Details");
//create heading
Row rowHeading = sheet.createRow(0);
rowHeading.createCell(0).setCellValue("Desk:");
rowHeading.createCell(1).setCellValue("Employee(s)Name:");
rowHeading.createCell(2).setCellValue("Number At Desk:");
//Font size and style loop for my headers
for(int i = 0; i < 3; i++)
{
CellStyle stylerowHeading = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBold(true);
font.setFontName(HSSFFont.FONT_ARIAL);
font.setFontHeightInPoints((short) 11);
stylerowHeading.setFont(font);
stylerowHeading.setVerticalAlignment(CellStyle.ALIGN_CENTER);
rowHeading.getCell(i).setCellStyle(stylerowHeading);
}
while(keepRunning){
Scanner scnr = new Scanner(System.in);
System.out.print("Enter desk number: ");
deskNumber = scnr.nextLine();
if(deskNumber.equals("EXIT"))
{
System.out.print("You have ended the program");
System.exit(0);
}
else
{
System.out.print("Enter employee name: ");
employeeName = scnr.nextLine();
System.out.print("Enter amount of employees at desk: ");
empsAtDesk = scnr.nextInt();
//This data needs to be written (Object[])
Map <String, Object[]> data = new TreeMap<String, Object[]>();
data.put("2", new Object[] {deskNumber, employeeName, empsAtDesk});
//Iterate over data and write to sheet
Set<String> keyset = data.keySet();
int rownum = 1;
for(String Key : keyset)
{
Row row = sheet.createRow(rownum++);
Object [] objArr = data.get(Key);
int cellnum = 0;
for(Object obj : objArr)
{
Cell cell = row.createCell(cellnum++);
if(obj instanceof String)
{
cell.setCellValue((String)obj);
}
else if(obj instanceof Integer)
{
cell.setCellValue((Integer)obj);
}
}
if(!(deskNumber.equals("EXIT")))
{
rownum++;
}
//Auto size my columns that will be filled out with user input info.
for (int i = 0; i < 3; i++)
{
sheet.autoSizeColumn(i);
}
}
try{
//save to excel file
FileOutputStream out = new FileOutputStream(new File("Employee Seating Report.xls"));
workbook.write(out);
out.flush();
out.close();
System.out.println("Excel Written Succesfully...");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}//pub static void end brace
}//pub class end brace
Vielen Dank! Ich kann nicht glauben, dass das mein Problem die ganze Zeit war! – Mel