Java 有没有什么好方法可以在不使用rs.getString的情况下检索数据并以.xls或.csv格式保存?
我在一个应用程序上工作,我想下载.xls格式的表,表是以.xls格式下载的,但我必须在while(rs.next())条件下给出列名,这是我不想要的,我想要不指定列名的数据应该基于st.executeQuery()下载;还有吗?我在这里粘贴我的代码Java 有没有什么好方法可以在不使用rs.getString的情况下检索数据并以.xls或.csv格式保存?,java,oracle,jsp,Java,Oracle,Jsp,我在一个应用程序上工作,我想下载.xls格式的表,表是以.xls格式下载的,但我必须在while(rs.next())条件下给出列名,这是我不想要的,我想要不指定列名的数据应该基于st.executeQuery()下载;还有吗?我在这里粘贴我的代码 <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page import="java.sql.*"%> <!DOCTYPE html> <ht
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<!DOCTYPE html>
<html>
<head>
<title>JSP Page</title>
</head>
<body>
<form method="post" action="Download_excel.jsp">
<table border="1">
<tr>
<td>FILE_NAME</td>
<td>FILE_UPLOAD_DATE</td>
<td>POLICY_NO</td>
<td> ENDORSEMENT_NO</td>
<td> GP_EBAO</td>
<td> TOL_PRM</td>
<td> PRODUCT_NAME</td>
<td> POLICY_NUMBER</td>
<td> GP_OF</td>
<td>DIFF</td>
</tr>
<%
String txtfilename=request.getParameter("txtfilename");
String btnsubmit=request.getParameter("btnsubmit");
if(txtfilename==null ||txtfilename.trim().isEmpty())
{
out.println("<html><body><script type=\"text/javascript\">");
out.println("confirm('first name field cannot be blank');");
out.println("location='xlsUpload.html';");
out.println("</script></body></html>");
}
else
if(btnsubmit!=null)
{
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename="+txtfilename+".xls");
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@172.18.115.213:1821:db","xe","se");
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select * from DYNAMIC_INSERT where file_name='"+txtfilename+"'");
while(rs.next())
{
%>
<tr>
<td><%=rs.getString("FILE_NAME")%></td>
<td><%=rs.getString("FILE_UPLOAD_DATE")%></td>
<td><%=rs.getString("POLICY_NO")%></td>
<td><%=rs.getString("ENDORSEMENT_NO")%></td>
<td><%=rs.getString("GP_EBAO")%></td>
<td><%=rs.getString("TOL_PRM")%></td>
<td><%=rs.getString("PRODUCT_NAME")%></td>
<td><%=rs.getString("POLICY_NUMBER")%></td>
<td><%=rs.getString("GP_OF")%></td>
<td><%=rs.getString("DIFF")%></td>
</tr>
<%
}
}
%>
</table>
</form>
</body>
</html>
JSP页面
文件名
文件上传日期
政策编号
背书号
吉普赛博
托尔鲁酒店
产品名称
保单号码
全科医生
差异
这里我尝试了下面的代码,但只检索列名,而不检索数据
ResultSetMetaData rsmd = rs.getMetaData();
int numOfCols = rsmd.getColumnCount();
for(int i = 1; i <= numOfCols; i++)
{
%>
<tr>
<td>
<%=rsmd.getColumnName(i))%>;
</td>
</tr>
<%
}
%>
ResultSetMetaData rsmd=rs.getMetaData();
int numOfCols=rsmd.getColumnCount();
对于(int i=1;i
;
是的,你可以。你已经走到一半了。您可以使用ResultSetMetaData来实现这一点 然后通过列索引调用rs.getString。 见->
ResultSetMetaData rsmd=rs.getMetaData();
int numOfCols=rsmd.getColumnCount();
while(rs.next()){
对于(int i=1;i)如果要输出所有列且所有列都包含字符串,可以在try代码中使用
。@Holger:no不是workedrs。如果idx是合法的列索引,则getString(int idx)是合法调用。“not working”没有帮助。
ResultSetMetaData rsmd = rs.getMetaData();
int numOfCols = rsmd.getColumnCount();
while(rs.next()) {
for(int i = 1; i <= numOfCols; i++) {
<%=rs.getString(i)%>
}
}