我需要使用Java将结果集的结果导出到Excel工作表中。结果集包含具有数千行和多列的表。 如果有人可以提供示例代码,因为我对此问题感到困扰,那么它将非常有用。以下是我用于实现此目的的示例代码,但由于某种原因无法在excel文件中获取正确的数据:-
SSFWorkbook workbook = new XSSFWorkbook();
try {
setConnection(appDB);
String queryName="SELECT * FROM ALL_TABLES where table_name='table_name'";
Reporter.addStepLog("----------------------------------- " + queryName.toUpperCase()
+ "\n - Validation Start" + " -----------------------------------");
ps = con.prepareStatement(queryName, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs = ps.executeQuery();
Statement statement = con.createStatement();
XSSFSheet spreadsheet = workbook.createSheet("employedb");
ResultSet resultSet = statement.executeQuery("select * from all_tab_columns where table_name='table_name'");
XSSFRow row = spreadsheet.createRow(0);
XSSFCell cell;
int cc=resultSet.getMetaData().getColumnCount();
for(int i=1;i<=cc;i++)
{
String headerVal=resultSet.getMetaData().getColumnName(i);
headerValues.add(headerVal);
cell = row.createCell(i-1);
cell.setCellValue(resultSet.getMetaData().getColumnName(i));
}
System.out.println(headerValues);
int i = 1;
while (resultSet.next())
{
for(int j=1;j<=cc;j++)
{
System.out.println(resultSet.getString(j));
XSSFRow row1 = spreadsheet.createRow((short) i);
row1.createCell((short) i).setCellValue(resultSet.getString(resultSet.getMetaData().getColumnName(j)));
i++;
}
}
FileOutputStream out = new FileOutputStream(new File("S:\\Downloads\\excel.xlsx"));
workbook.write(out);
out.close();
System.out.println("exceldatabase.xlsx written successfully");
}catch(Exception e){}
}
如果我是这个论坛的新手,请告诉我问题是否明确。
答案 0 :(得分:0)
对我来说,问题不是很清楚。您想将计算数据放入Excel工作表吗?还是要从Excel工作表中获取计算数据?
我知道您想在工作表中放入一些数据。 因此,您可以使用多个框架来执行此操作。例如。 smartXLS或Apache POI库
答案 1 :(得分:0)
List<Double> resultList = new ArrayList();
resultList.add(250.0);
resultList.add(300.5);
resultList.add(500.9);
public void setResultsToSheet(List results) throws Exception {
WorkBook workBook = new WorkBook();
int row = 0; //index of first row is 0
for (int i = 0; i < results.size(); i++) {
double result = (double) results.get(i);
workBook.setNumber(row, 1, result);
row++;
}
workBook.write("X\\yourDestination\\excel.xlsx");
}
希望可以为您提供帮助。
答案 2 :(得分:0)
您可以尝试使用MemPOI。看看:
File file = new File("S:\\Downloads\\excel.xlsx")
PreparedStatement prepStmt = this.connection.prepareStatement("SELECT * FROM ALL_TABLES where table_name='table_name'");
new MempoiBuilder()
.setFile(file)
.addMempoiSheet(new MempoiSheet(prepStmt, "employedb"))
.build()
.prepareMempoiReportToFile()
.get();
您可以轻松添加模板。看看文档