站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题poi操作Excel的问题,都弄一天了,几行代码总有问题。

poi操作Excel的问题,都弄一天了,几行代码总有问题。

摘要: poi操作Excel的问题,都弄一天了,几行代码总有问题。


<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.io.*,org.apache.poi.hssf.usermodel.*" errorPage="" %>

<head>

无标题文档
</head>

<body>
<%
try{
  // 创建对Excel工作簿文件的引用
  HSSFWorkbook workbook = new HSSFWorkbook( new FileOutputStream( "D:/Tomcat 5.5/webapps/email0904/workbook.xls"));
  // 创建对工作表的引用。
  // 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
  HSSFSheet sheet = workbook.getSheet("Sheet1");
  // 也可用getSheetAt(int index)按索引引用,
  // 在Excel文档中,第一张工作表的缺省索引是0,
  // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
  // 读取左上端单元
  HSSFRow row = sheet.getRow(0);
  HSSFCell cell = row.getCell((short)0);
  // 输出单元内容,cell.getStringCellValue()就是取所在单元的值
  System.out.println("左上端单元是: " + cell.getStringCellValue());
 } catch (Exception e) {
out.println(e.toString());
}
%>

</body>


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 9 in the jsp file: /1.jsp
Generated servlet error:
Syntax error on tokens, delete these tokens

An error occurred at line: 9 in the jsp file: /1.jsp
Generated servlet error:
Syntax error on tokens, delete these tokens

An error occurred at line: 9 in the jsp file: /1.jsp
Generated servlet error:
Syntax error on tokens, delete these tokens

An error occurred at line: 9 in the jsp file: /1.jsp
Generated servlet error:
Syntax error on tokens, delete these tokens

An error occurred at line: 9 in the jsp file: /1.jsp
Generated servlet error:
Syntax error on tokens, delete these tokens

An error occurred at line: 9 in the jsp file: /1.jsp
Generated servlet error:
Syntax error on token "Invalid Character", delete this token


org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 9 in the jsp file: /1.jsp
Generated servlet error:
Syntax error on tokens, delete these tokens

An error occurred at line: 9 in the jsp file: /1.jsp
Generated servlet error:
Syntax error on tokens, delete these tokens

An error occurred at line: 9 in the jsp file: /1.jsp
Generated servlet error:
Syntax error on tokens, delete these tokens

An error occurred at line: 9 in the jsp file: /1.jsp
Generated servlet error:
Syntax error on tokens, delete these tokens

An error occurred at line: 9 in the jsp file: /1.jsp
Generated servlet error:
Syntax error on tokens, delete these tokens

An error occurred at line: 9 in the jsp file: /1.jsp
Generated servlet error:
Syntax error on token "Invalid Character", delete this token


org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:414)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:297)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)




请问是什么原因啊。大家帮帮忙


学习


<%@ page contentType="text/html; charset=gb2312" language="java" %>

<%@ page import="java.sql.*,java.io.*,org.apache.poi.hssf.usermodel.*" errorPage="" %>



<%--
Created by IntelliJ IDEA.
User: hh
Date: 2006-8-21
Time: 11:07:14
To change this template use File | Settings | File Templates.
--%>

<%@ page import="org.apache.poi.hssf.usermodel.HSSFCell,
org.apache.poi.hssf.usermodel.HSSFRow,
org.apache.poi.hssf.usermodel.HSSFSheet,
org.apache.poi.hssf.usermodel.HSSFWorkbook,
java.text.DecimalFormat,
java.io.FileOutputStream,
java.io.FileInputStream
"
%>
<%
response.setContentType("application/vnd.ms-excel;charset=GBK");

String outputFile = "d://poi//tels.xls";


String fileToBeRead = "d://poi//tels.xls";

try {
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值
// 如要新建一名为"效益指标"的工作表,其语句为:
// HSSFSheet sheet = workbook.createSheet("效益指标");
HSSFSheet sheet = workbook.createSheet();
// 在索引0的位置创建行(最顶端的行)
HSSFRow row = sheet.createRow((short) 1);
//在索引0的位置创建单元格(左上端)
HSSFCell cell = row.createCell((short) 1);
HSSFCell cell1 = row.createCell((short) 2);
// 定义单元格为字符串类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
// 在单元格中输入一些内容
cell.setCellValue("sweater");
cell1.setCellValue("test1");
// 新建一输出文件流
FileOutputStream fOut = new FileOutputStream(outputFile);
// 把相应的Excel 工作簿存盘
workbook.write(fOut);
fOut.flush();
// 操作结束,关闭文件
fOut.close();
System.out.println("文件生成...");


} catch (Exception e) {
System.out.println("已运行 xlCreate() : " + e);
}

DecimalFormat df = new DecimalFormat("#");


try {
// 创建对Excel工作簿文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(
fileToBeRead));
//System.out
// .println("===SheetsNum===" + workbook.getNumberOfSheets());//获取sheet数
for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {
if (null != workbook.getSheetAt(numSheets)) {
HSSFSheet aSheet = workbook.getSheetAt(numSheets);//获得一个sheet
//System.out.println("+++getFirstRowNum+++" +
// aSheet.getFirstRowNum());//
//System.out.println("+++getLastRowNum+++" +
// aSheet.getLastRowNum());


for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet
.getLastRowNum(); rowNumOfSheet++) {
if (null != aSheet.getRow(rowNumOfSheet)) {
HSSFRow aRow = aSheet.getRow(rowNumOfSheet);


//System.out.println(">>>getFirstCellNum<<<"+
// aRow.getFirstCellNum());
//System.out.println(">>>getLastCellNum<<<"+
// aRow.getLastCellNum());
for (short cellNumOfRow = 0; cellNumOfRow <= aRow
.getLastCellNum(); cellNumOfRow++) {


if (null != aRow.getCell(cellNumOfRow)) {
HSSFCell aCell = aRow.getCell(cellNumOfRow);


int cellType = aCell.getCellType();
//System.out.println(cellType);
switch (cellType) {
case 0://Numeric
String strCell = df.format(aCell
.getNumericCellValue());

System.out.println(strCell);



break;
case 1://String
strCell = aCell.getStringCellValue();

System.out.println(strCell);



break;
default:
//System.out.println("格式不对不读");//其它格式的数据
}


}


}
}


}


}


}


} catch (Exception e) {
System.out.println("ReadExcelError" + e);
}








%>



应该是你的jsp文件有一些非法字符
如果代码是从网上或其他地方copy过来的话
经常会有这样的情况

注意一下每行的开头结尾,很多时候是在空白的地方



改成下面的来看看呢:
try{
InputStream in=new FileInputStream("D:/Tomcat 5.5/webapps/email0904/workbook.xls");
HSSFWorkbook workbook = new HSSFWorkbook(in);
HSSFSheet sheet = workbook.getSheet("Sheet1");
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short)0);
System.out.println("左上端单元是: " + cell.getStringCellValue());
}
catch (Exception e) {
System.out.println(e.toString());
}
}


我前天把他搞定了

你是要把excel中的数据显示出来还是插入进数据库中?
然后把你的信箱给我。。。


谢谢各位了。问题我 已经解决了,是COPY来的,有非法字符造成的。


↑返回目录
前一篇: 求助加散分tomcat+mysql 200分
后一篇: 如何实现表单的循环提交?急!!!