package Reader;
public class Write_Excel {
private WritableCellFormat timesBoldUnderline;
private WritableCellFormat times;
private String inputFile;
Thread thread = new Thread();
static String box, plc, hmi;
int k=1,cnt=1;
public void witeExcel(ArrayList<String> B,ArrayList<String> P, ArrayList<String> H)
throws WriteException, IOException {
Write_Excel test = new Write_Excel();
test.setOutputFile("C://Users//Tanmay//Desktop//Export.xls");
for (int index = 0; index < B.size(); index++) {
box = B.get(index);
plc = P.get(index);
hmi = H.get(index);
test.write();
}System.out.println("Please check the result file under C://Users//Tanmay//Desktop//Export.xls ");
}
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("Serial Numbers", 0);
WritableSheet excelSheet = workbook.getSheet(0);
excelSheet.setColumnView(1, 15);
excelSheet.setColumnView(2, 15);
excelSheet.setColumnView(3, 15);
createLabel(excelSheet);
createContent(excelSheet);
workbook.write();
System.out.println("Value of k in close method is "+k);
if(k==4) {
System.out.println("Condition Satisfied where value is "+k);
workbook.close();
}
}
private void createLabel(WritableSheet sheet) throws WriteException {
//System.out.println("In create label method");
// Lets create a times font
WritableFont times10pt = new WritableFont(WritableFont.ARIAL, 12);
// Define the cell format
times = new WritableCellFormat(times10pt);
// Lets automatically wrap the cells
times.setWrap(true);
// create create a bold font with underlines
WritableFont times10ptBoldUnderline = new WritableFont(
WritableFont.TIMES, 12, WritableFont.BOLD, false);
timesBoldUnderline = new WritableCellFormat(times10ptBoldUnderline);
// Lets automatically wrap the cells
timesBoldUnderline.setWrap(false);
CellView cv = new CellView();
cv.setFormat(times);
cv.setSize(20);
cv.setFormat(timesBoldUnderline);
// Write a few headers
addCaption(sheet, 0, 0, "BOX");
addCaption(sheet, 1, 0, "CPU");
addCaption(sheet, 2, 0, "HMI");
//System.out.println("Out create label method");
}
private void addCaption(WritableSheet sheet, int column, int row, String s)
throws RowsExceededException, WriteException {
//System.out.println("In addCaption Method");
Label label;
label = new Label(column, row, s, timesBoldUnderline);
sheet.addCell(label);
//System.out.println("Out addCaption Method");
}
private void createContent(WritableSheet sheet) throws WriteException,
RowsExceededException {
System.out.println("In createContent Method");
addLabel(sheet, 0, k, box);
addLabel(sheet, 1, k, plc);
addLabel(sheet, 2, k, hmi);
//System.out.println("Value of K is "+k);
System.out.println("Out createContent Method");
k++;
}
private void addLabel(WritableSheet sheet, int column, int row, String s)
throws WriteException, RowsExceededException {
System.out.println("In Addlabel Method");
Label label;
label = new Label(column, row, s, times);
System.out.println("Value of row is "+row+" Value of column is "+column+" Value string is "+s );
sheet.addCell(label);
System.out.println("Out addlabel Method");
}
}
私はバーコード読み取り用のアプリケーションを構築しています。以下のコードの問題は、o / pでExcelファイルを取得すると、テーブル形式で取得された最後のデータのみがo / pのExcelファイルに取得されることです。どこが間違っているのか、何をすべきかについてアドバイスが必要でした。私はすでにsystem.out.printlln()ですべてをチェックしました。しかし、解決策は見つかりませんでした。
Thanks in advance and double to one who helps to get right solution.
理由は、呼び出すたびにメソッドでワークブックを作成しているため、古いデータがクリーンアップされ、新しいデータが追加されるためです。
これをメソッドから削除し、別の場所に移動して1回実行します。
File file = new File(inputFile);//From File
WorkbookSettings wbSettings = new WorkbookSettings();
wbSettings.setLocale(new Locale("en", "EN"));
WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings);
workbook.createSheet("Serial Numbers", 0);/To configuration
初期化をコンストラクターに移動することをお勧めします。
writeExcel
しかし 宣言でこれらの変数をクラスレベルはあなたがそれらを初期化することができ、あなたのvariables.Soを宣言した手段wordExcel
。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加