2016-04-12 4 views
1

私は、特定のデータをExcelアーカイブに保存するプログラムを開発しています。私はExcelファイル、シートを作成し、それに書き込むコードを書いた。私のコードは以下の通りです。問題は、アーカイブに書き込むときに、情報を挿入する行を指定する必要があることです。とにかく、コードを次の新しい空の行に自動的に挿入するようにしていますか?Excel - 次の空の行への自動入力

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 "); }} 

答えて

0

私はこのAPIを使用していないので、これを行うより良い方法があるかどうかわかりません。また、Javaは私のことではありませんので、コード例を教えてください。

スプレッドシートで最初の空の行を見つける必要があります。列Aが常に入力されていると仮定すると、空の行が見つかるまで、行1からNまでループすることができます。

使用しているAPIのチュートリアルでは、Excelファイルの読み方を示しています。

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

関連する問題