我正在调用JSP程序以从数据库中提取数据以实现excel。数据库表具有112列和35k记录。提取数据需要一个小时。关于如何在5分钟内制作出任何建议?我看过很多类似的文章,但找不到任何可以改善性能的文章。感谢您的建议。我的工作代码如下-
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.FileOutputStream"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.ResultSetMetaData"%>
<%@page import="java.util.*"%>
<%@page import="java.sql.SQLException"%>
<%@page import="org.apache.poi.ss.usermodel.Cell"%>
<%@page import="org.apache.poi.ss.usermodel.Row"%>
<%@page import="org.apache.poi.ss.usermodel.Sheet"%>
<%@page import="org.apache.poi.ss.usermodel.Workbook"%>
<%@page import="org.apache.poi.ss.usermodel.WorkbookFactory"%>
<%@page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"%>
<%@page import="org.apache.poi.hssf.usermodel.HSSFSheet"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Export Data to Excel File</title>
</head>
<body>
<%
HSSFWorkbook writeWorkbook = new HSSFWorkbook();
HSSFSheet desSheet = writeWorkbook.createSheet("sheet");
Connection connection = null;
ResultSet rs = null;
int counter=1;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection("jdbc:oracle:thin:@PRD:PRD","ABC","ABC");
Statement statement = connection.createStatement();
String sql = ("select * from tblnm");
rs = statement.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();
Row desRow1 = desSheet.createRow((short)0);
for(int col=0 ;col < columnsNumber;col++) {
Cell newpath = desRow1.createCell(col);
newpath.setCellValue(rsmd.getColumnLabel(col+1));
}
while(rs.next()) {
System.out.println("Row number" + rs.getRow() );
Row desRow = desSheet.createRow(rs.getRow());
for(int col=0 ;col < columnsNumber;col++) {
Cell newpath = desRow.createCell(col);
newpath.setCellValue(rs.getString(col+1));
}
FileOutputStream fileOut = new FileOutputStream("C:/test.xls");
writeWorkbook.write(fileOut);
fileOut.flush();
fileOut.close();
out.println("Your excel file has been generated!");
writeWorkbook.write(response.getOutputStream());
}
}
catch (SQLException e) {
System.out.println("Failed to get data from database");
}
%>
</body>
</html>