我正在一个应用程序上工作,我想以.xls格式下载表,表以.xls格式下载,但是我必须在while(rs.next())条件下给出列名,这是我不想要的,我想要不指定列名的数据应基于st.executeQuery()下载;反正有吗在这里我粘贴我的代码
<%@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>
在这里我尝试下面的代码,但只检索列名而不是数据
ResultSetMetaData rsmd = rs.getMetaData();
int numOfCols = rsmd.getColumnCount();
for(int i = 1; i <= numOfCols; i++)
{
%>
<tr>
<td>
<%=rsmd.getColumnName(i))%>;
</td>
</tr>
<%
}
%>
答案 0 :(得分:0)
是的,可以。你已经到一半了。
您可以为此使用ResultSetMetaData。
然后调用rs.getString传递列索引。 参见-> https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#getString(int)
public static string GenerateUserToken<TUser, TKey>(this UserManager<TUser, TKey> manager, string purpose, TKey userId)
where TUser : class, IUser<TKey>
where TKey : IEquatable<TKey>;