2016-04-12 13 views
1

Ich entwickle ein Programm, das bestimmte Daten in einem Excel-Archiv speichert. Ich habe einen Code geschrieben, der eine Excel-Datei, ein Blatt erstellt und darin schreibt. Mein Code ist unten gezeigt. Das Problem ist, dass ich beim Schreiben in das Archiv die Zeile angeben muss, in die die Information eingefügt werden soll. Gibt es denn eh den Code automatisch in die nächste neue leere Zeile einzufügen?Excel - automatische Eingabe in die nächste leere Zeile

package de.vogella.java.excel.writer; 
import java.io.File; 
import java.io.IOException; 
import java.util.Locale; 
import jxl.CellView; 
import jxl.Workbook; 
import jxl.WorkbookSettings; 
import jxl.format.UnderlineStyle; 
import jxl.write.Formula; 
import jxl.write.Label; 
import jxl.write.Number; 
import jxl.write.WritableCellFormat; 
import jxl.write.WritableFont; 
import jxl.write.WritableSheet; 
import jxl.write.WritableWorkbook; 
import jxl.write.WriteException; 
import jxl.write.biff.RowsExceededException; 
public class WriteExcel { 
private WritableCellFormat timesBoldUnderline; 
private WritableCellFormat times; 
private String inputFile; 

public void setOutputFile(String inputFile) { 
this.inputFile = inputFile; 
} 

public void write() throws IOException, WriteException { 
File file = new File(inputFile); 
WorkbookSettings wbSettings = new WorkbookSettings(); 
wbSettings.setLocale(new Locale("en", "EN")); 
WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings); 
workbook.createSheet("Report", 0); 
WritableSheet excelSheet = workbook.getSheet(0); 
createLabel(excelSheet); 
createContent(excelSheet); 
workbook.write(); 
workbook.close(); } 
private void createLabel(WritableSheet sheet) 
    throws WriteException { 
// Lets create a times font 
WritableFont times10pt = new WritableFont(WritableFont.TIMES, 10); 
// Define the cell format 
times = new WritableCellFormat(times10pt); 
// Lets automatically wrap the cells 
times.setWrap(true); 

// create create a bold font with unterlines 
WritableFont times10ptBoldUnderline = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD, false, 
UnderlineStyle.SINGLE); 
timesBoldUnderline = new WritableCellFormat(times10ptBoldUnderline); 
// Lets automatically wrap the cells 
timesBoldUnderline.setWrap(true); 

CellView cv = new CellView(); 
cv.setFormat(times); 
cv.setFormat(timesBoldUnderline); 
cv.setAutosize(true); 
// Write a few headers 
addCaption(sheet, 0, 0, "type"); 
addCaption(sheet, 1, 0, "result"); 
addCaption(sheet, 2, 0, "time"); 
addCaption(sheet, 3, 0, "date");} 
private void createContent(WritableSheet sheet) throws WriteException, 
RowsExceededException { 
// Write a few number 
for (int i = 1; i < 10; i++) { 
// First column 
addLabel(sheet, 0, i, "Boring text " + i); 
// Second column 
addNumber(sheet, 1, i, i * i); 
// third column 
addNumber(sheet, 2, i, i + 10); 
//furth column 
addNumber(sheet, 3, i, i * i);} } 
private void addCaption(WritableSheet sheet, int column, int row, String s) 
throws RowsExceededException, WriteException { 
Label label; 
label = new Label(column, row, s, timesBoldUnderline); 
sheet.addCell(label); } 
private void addNumber(WritableSheet sheet, int column, int row, 
Integer integer) throws WriteException, RowsExceededException { 
Number number; 
number = new Number(column, row, integer, times); 
sheet.addCell(number); } 
private void addLabel(WritableSheet sheet, int column, int row, String s) 
throws WriteException, RowsExceededException { 
Label label; 
label = new Label(column, row, s, times); 
sheet.addCell(label);} 
public static void main(String[] args) throws WriteException, IOException { 
WriteExcel test = new WriteExcel(); 
test.setOutputFile("D:ghada.xls"); 
test.write(); 
System.out.println("Please check the result file under c:/temp/lars.xls "); }} 

Antwort

0

Ich habe diese API nicht verwendet, also weiß nicht, ob es eine bessere Möglichkeit gibt, dies zu tun. Außerdem ist Java nicht mein Ding, also kann ich Ihnen keine Codebeispiele geben.

Sie müssen die erste leere Zeile in Ihrer Tabelle finden. Unter der Annahme, dass Spalte A immer gefüllt ist, können Sie einfach eine Schleife von Zeile 1 zu N durchführen, bis Sie eine leere Zeile gefunden haben.

Das Lernprogramm für die von Ihnen verwendete API zeigt, wie Sie eine Excel-Datei lesen können.

http://www.vogella.com/tutorials/JavaExcel/article.html

Verwandte Themen