java excel 显示_java – 在浏览器中显示Excel工作表?

我需要在Web浏览器中显示新生成的excel(来自使用Apache POI的表)(无论是Firefox,Opera还是IE).我已经创建了JSP文件

contentType="application/vnd.ms-excel"

但我没有得到它.

这是我的代码片段:

int r=0;

HSSFWorkbook book;

HSSFSheet sheet;

HSSFRow row;

CreationHelper createHelper = book.getCreationHelper();

Connection conn;

Statement stmt;

ResultSet rs;

%>

Report

book = new HSSFWorkbook();

sheet = book.createSheet("Report");

%>

try {

// Header of the Excel File

row = sheet.createRow(r);

row.createCell(0).setCellValue("Visit ID");

row.createCell(1).setCellValue("Carrier Name");

row.createCell(2).setCellValue("Phone Number");

row.createCell(3).setCellValue("Patient Name");

row.createCell(4).setCellValue("Subscriber ID");

row.createCell(5).setCellValue("Subscriber Name");

row.createCell(6).setCellValue("Chart Number");

row.createCell(7).setCellValue("Date Of Birth");

row.createCell(8).setCellValue("Subscriber Employer");

row.createCell(9).setCellValue("Service Date");

row.createCell(10).setCellValue("Provider Name");

row.createCell(11).setCellValue("CPT Code");

row.createCell(12).setCellValue("Aging Date");

row.createCell(13).setCellValue("Total");

row.createCell(14).setCellValue("Follow Up Notes");

row.createCell(15).setCellValue("Internal Status Code");

CellStyle cellStyle = book.createCellStyle();

cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("MM/dd/yyyy"));

Statement stNotes;

ResultSet rsNotes;

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/maintain", "root", "root");

stmt = conn.createStatement();

stNotes = conn.createStatement();

rs = stmt.executeQuery("SELECT b.VisitID, b.CarrierName, b.PhoneNum, b.PatientName, "

+ "b.SubscriberID, b.SubscriberName, b.ChartNum, b.DoB, b.SubscriberEmp, "

+ "b.ServiceDate, b.ProviderName, b.CPTCode, b.BillingDate, b.BalanceAmt "

+ "FROM billing b INNER JOIN followup f ON b.VisitID = f.VisitID GROUP BY VisitID");

while(rs.next()) {

r++;

row = sheet.createRow(r);

row.createCell(0).setCellValue(rs.getString("VisitID"));

row.createCell(1).setCellValue(rs.getString("CarrierName"));

row.createCell(2).setCellValue(rs.getString("PhoneNum"));

row.createCell(3).setCellValue(rs.getString("PatientName"));

row.createCell(4).setCellValue(rs.getString("SubscriberID"));

row.createCell(5).setCellValue(rs.getString("SubscriberName"));

row.createCell(6).setCellValue(rs.getString("ChartNum"));

row.createCell(7).setCellValue(rs.getString("DoB"));

row.createCell(8).setCellValue(rs.getString("SubscriberEmp"));

row.createCell(9).setCellValue(rs.getString("ServiceDate"));

row.createCell(9).setCellStyle(cellStyle);

row.createCell(10).setCellValue(rs.getString("ProviderName"));

row.createCell(11).setCellValue(rs.getString("CPTCode"));

row.createCell(12).setCellValue(rs.getString("BillingDate"));

row.createCell(12).setCellStyle(cellStyle);

row.createCell(13).setCellValue(rs.getString("BalanceAmt"));

rsNotes = stNotes.executeQuery("SELECT Date, InternalStatusCode, FollowUpNote "

+ "FROM followup WHERE VisitID='" + rs.getString("VisitID") + "' ORDER BY Date");

while(rsNotes.next()) {

row.createCell(14).setCellValue(rsNotes.getString("Date") + " - " + rsNotes.getString("FollowUpNote"));

row.createCell(15).setCellValue(rs.getString("VisitID"));

}

}

}

catch(ClassNotFoundException cnf) {

out.print("
Error : MySQL Driver not found.
");

}

catch(Exception ex) {

out.print("Error :
" + ex);

}

%>

我在Tomcat 6.0.26中遇到此异常:

exception

org.apache.jasper.JasperException: java.lang.NullPointerException

org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:156)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

java.lang.NullPointerException

org.apache.jsp.GetReport_jsp.(GetReport_jsp.java:29)

sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

java.lang.reflect.Constructor.newInstance(Constructor.java:513)

java.lang.Class.newInstance0(Class.java:355)

java.lang.Class.newInstance(Class.java:308)

org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:145)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

我错过了什么或有什么不对吗?

任何人都可以帮助我摆脱这个问题吗?

Thanx提前.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值