0
我想填充一個名稱爲excel的文件。我正在查詢數據庫,需要根據名稱更新excel值。我有問題,因爲我認爲值被覆蓋,只有最後一個值被存儲在文本中。在Excel中使用java填充值 - excel有主鍵值
我正在迭代結果集並檢查excel中的名稱。如果它們匹配,我就會填充這些值。
我的代碼如下 - 對於很多的SOP
public class ExcelWriteDB {
/**
* @param args
*/
public static void main(String[] args) {
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection2 = null;
// Create a connection to the database
connection2 = DriverManager.getConnection("");
Statement mystat2 = connection2.createStatement();
String query = "";
ResultSet result = mystat2.executeQuery(query);
ResultSetMetaData rsmd2=result.getMetaData();
FileInputStream file = new FileInputStream(new File("source.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(2);
while(result.next()){
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext())
{
Row row = rowIterator.next();
//For each row, iterate through all the columns
Iterator<Cell> cellIterator = row.cellIterator();
Cell cell = row.getCell(0);
Cell cell3 = row.createCell(2);
if (cell != null) {
switch (cell.getCellType())
{
case Cell.CELL_TYPE_NUMERIC:
break;
case Cell.CELL_TYPE_STRING:
if(cell.getStringCellValue().equals(result.getString("NAME"))){
double UPB = Double.parseDouble(result.getString("UPB"));
cell3.setCellValue(UPB);
}
break;
}
}
}
}// while(result.next()){
FileOutputStream out = new FileOutputStream(new File("ZXC.xlsx"));
workbook.write(out);
out.close();
file.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}的道歉
我相信我失去了一些東西,但我不知道是什麼。任何幫助讚賞。謝謝。
感謝您的回覆。 - SWITCH這裏只是佔位符,我稍後會添加更多的邏輯。 - 邏輯是檢查每行第一列的名稱,這就是爲什麼我遍歷每一行並獲取第一列。同樣基於名稱,我需要在結果集中查找名稱的值。所以每次我需要獲得第一列並在第三列更新(更多列後面)。 - 我在遍歷所有數據庫結果集後寫入下面的文件。 問題是結果沒問題,只是最後一行得到更新。 再次感謝。 – user115391
我得到了這個工作。這是邏輯錯誤,添加了以下邏輯 Cell cell3 = row.getCell(2); if(cell3 == null){cell_3 = row.createCell(2); } 而不是每次迭代創建單元格。再次感謝您的幫助。 – user115391