poi读excel中文乱码问题

lightluke 2007-04-04 10:54:59
我是在tomcat5.0环境下做的poi读取上传的excel文件
如果没有中文,可以正常运行,
如果excel里有中文,就显示??
如果上传的文件名带中文,就不能读到文件。
这个问题该怎么解决?
...全文
1317 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lightluke 2007-04-10
  • 打赏
  • 举报
回复
谁能告诉我,怎么看当前用的是什么编码?
lightluke 2007-04-09
  • 打赏
  • 举报
回复
我用poi做了个往excel里插数据的文件
往里面插入中文,再将此文件上传上去,可以识别中文
但直接建立的excel表,里面的中文却还是不能显示
问题是不是excel跟tomcat的编码不同的缘故呢?
lightluke 2007-04-09
  • 打赏
  • 举报
回复
在ie地址栏里可以看到中文的fn

yuzhenbj 2007-04-06
  • 打赏
  • 举报
回复
request.setCharacterEncoding("gbk");//保证你的fn是中文
String fn=request.getParameter("filename");
yuzhenbj 2007-04-06
  • 打赏
  • 举报
回复
如果是单元格的内容出错加
cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
yuzhenbj 2007-04-05
  • 打赏
  • 举报
回复
加过滤器
lightluke 2007-04-05
  • 打赏
  • 举报
回复
注解下好么,看了不太明白
response.setContentType("application/vnd.ms-excel;charset=gb2312");
这句什么意思?以excel显示?那样的话就弹出打开或保存的对话框了。
lightluke 2007-04-05
  • 打赏
  • 举报
回复
还是不行啊
我把原始代码贴出来,哪给高手指点下,多谢了
package com;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;

import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.text.DecimalFormat;
import java.util.Enumeration;

public class POIExcelServlet extends HttpServlet
{
//从excel中读取数据存入ArrayList中
String pp ="F:\\Program Files\\Apache Software Foundation\\Tomcat 5.0\\webapps\\ROOT\\Excel\\";
String poiexcelPath = "";

public void init(ServletConfig config) throws ServletException{
super.init(config);
}

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
doPost(request,response);
}
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
String fn=request.getParameter("filename");
poiexcelPath = pp + fn;
readExcel(this.poiexcelPath,response);
}

public void readExcel(String filename,HttpServletResponse response) throws IOException
{
DecimalFormat df = new DecimalFormat("#");
String fileToBeRead = filename;
PrintWriter out = response.getWriter();

try{
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));

int numSheets;
int rowNumOfSheet;
short cellNumOfRow;

for(numSheets = 0;numSheets < workbook.getNumberOfSheets();numSheets++)
{
if(null != workbook.getSheetAt(numSheets))
{
HSSFSheet aSheet = workbook.getSheetAt(numSheets);

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

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


int cellType = aCell.getCellType();
switch(cellType){
case 0:
String strCell = df.format(aCell.getNumericCellValue());
out.println(strCell+ "");
break;
case 1:
strCell = aCell.getStringCellValue();
out.println(strCell+ "");
break;
default:
strCell = "数据格式不对";
out.println(strCell+ "");
}

}
}
out.print("<br>");
}
}
}


}
}catch(Exception e){
System.out.println("ReadExcelError"+ e);
}
}
}
lightluke 2007-04-04
  • 打赏
  • 举报
回复
问题是怎么转
比特灵 2007-04-04
  • 打赏
  • 举报
回复
两个问题:先解决中文文件名成不能上传的问题(不能读到文件),再解决文件内中文问题。

多试几次转码。
lightluke 2007-04-04
  • 打赏
  • 举报
回复
好象不行
问题应该是servlet整个不支持中文
我在里面打2个中文都显示??
yuzhenbj 2007-04-04
  • 打赏
  • 举报
回复
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
...
response.setContentType("application/vnd.ms-excel;charset=gb2312");
response.setCharacterEncoding("UTF-8");
//------
String docName="电流极值报表.xls";
docName=java.net.URLEncoder.encode(docName,"UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" +new String(docName.getBytes("UTF-8"),"GBK"));
//------
我刚遇见,绝对可以解决,最好名字不要太长!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧