我用jxl做导出,手动创建EXCEl
public void getExcel(String sheetName,OutputStream output,List<Map> epList) throws IOException, WriteException
{
//创建工作薄
WritableWorkbook wb = Workbook.createWorkbook(output);
//创建工作表 Sheet
WritableSheet sheet = wb.createSheet("Sheet1", 0);
//创建标签
Label label = new Label(0, 0, "外协合同清单");
sheet.addCell(label);
for(int row=0;row<epList.size();row++){
for(int i=0;i<20;i++){
String spStr=epList.get(row).toString().split("=")[i+1];
Label label2=new Label(i,row+1,spStr.split(",")[0]);
sheet.addCell(label2);
}
}
try {
output.flush();
wb.write();
wb.close();
output.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println( "Output is closed ");
}
就是从前台一个list导出到excel但现在问题是:导出后都是乱码,没有规律的乱码,连数字和字母也都是乱码!上网搜到说加一句话:
WorkbookSettings workbookSettings=new WorkbookSettings();
workbookSettings.setEncoding("ISO-8859-1"); //关键代码,解决中文乱码
Workbook workbook=Workbook.getWorkbook(is,workbookSettings);
但我不知道我的程序里面这句话怎么加?is貌似是个文件,我这里excel是手动创建的,is这个应该怎么写呢?另外页面是这样的:<%@ page contentType="application/vnd.ms-excel" language="java" import="java.util.*,com.direct.query.ps.WriteExcel" pageEncoding="GBK"%><%
List epList=(List)session.getAttribute("epList");
out.print(session.getAttribute("epList"));
response.setHeader("Content-Disposition","attachment;filename=waixie.xls");//指定下载的文件名
response.setContentType("application/vnd.ms-excel");
WriteExcel we=new WriteExcel();
we.getExcel("111.xls",response.getOutputStream(),epList);
%>
求前辈帮我看看啥问题?谢谢了
public void getExcel(String sheetName,OutputStream output,List<Map> epList) throws IOException, WriteException
{
//创建工作薄
WritableWorkbook wb = Workbook.createWorkbook(output);
//创建工作表 Sheet
WritableSheet sheet = wb.createSheet("Sheet1", 0);
//创建标签
Label label = new Label(0, 0, "外协合同清单");
sheet.addCell(label);
for(int row=0;row<epList.size();row++){
for(int i=0;i<20;i++){
String spStr=epList.get(row).toString().split("=")[i+1];
Label label2=new Label(i,row+1,spStr.split(",")[0]);
sheet.addCell(label2);
}
}
try {
output.flush();
wb.write();
wb.close();
output.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println( "Output is closed ");
}
就是从前台一个list导出到excel但现在问题是:导出后都是乱码,没有规律的乱码,连数字和字母也都是乱码!上网搜到说加一句话:
WorkbookSettings workbookSettings=new WorkbookSettings();
workbookSettings.setEncoding("ISO-8859-1"); //关键代码,解决中文乱码
Workbook workbook=Workbook.getWorkbook(is,workbookSettings);
但我不知道我的程序里面这句话怎么加?is貌似是个文件,我这里excel是手动创建的,is这个应该怎么写呢?另外页面是这样的:<%@ page contentType="application/vnd.ms-excel" language="java" import="java.util.*,com.direct.query.ps.WriteExcel" pageEncoding="GBK"%><%
List epList=(List)session.getAttribute("epList");
out.print(session.getAttribute("epList"));
response.setHeader("Content-Disposition","attachment;filename=waixie.xls");//指定下载的文件名
response.setContentType("application/vnd.ms-excel");
WriteExcel we=new WriteExcel();
we.getExcel("111.xls",response.getOutputStream(),epList);
%>
求前辈帮我看看啥问题?谢谢了
解决方案 »
- 框架中jsp弹出js后提交表单时执行action时没有跳转回原jsp,而是在打开了另外一个页面,我想让它跳回原jsp
- 关于s2sh下面开发的webservice下客户端的开发
- 想得到DB2数据库nextval的值
- 进中科软有前途
- 前辈帮帮忙吧,MyEclipse问题,第一次接触这个IDE。
- 使用ibatise,如何把目录下的所有的配sqlmap配置文件都引入到ibatise的文件中
- EJB3.0的JAR包发布问题
- sos!!!小弟新手,打算做一个基于j2ee和oracle的论坛,请问需要什么技术?要解决什么关键问题?在线等待谢谢!
- 哪里有weblogic6.1 sp4 下载!!!
- JSP页面权限控An exception occurred processing JSP page [/pages/main.jsp] at line [71]
- 请帮忙看这个错误到底处在哪儿?关闭数据库时出错
- 添加删除替换一个字符
String filename = mon+"月"+cpName+".xls";
filename=new String(filename.getBytes("iso8859-1"),"gb2312");
response.setContentType("application/x-msdownload");
response.setHeader("Content-disposition","attachment; filename="+new String(filename.getBytes("gb2312"),"iso8859-1"));
bis =new java.io.BufferedInputStream(new java.io.FileInputStream(config.getServletContext().getRealPath("file/" + filename)));
bos=new java.io.BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff,0,bytesRead);
}
}
catch(Exception e){
e.printStackTrace();
}
finally {
if (bis != null)bis.close();
if (bos != null)bos.close();
}
public class Caozuo {
InputStream is = null; //定义一个输入流
jxl.Workbook rwb = null;//定义一个只读的工作薄
WritableWorkbook wr=null; //定义一个可写的工作薄
FileOutputStream out=null;
WritableSheet sheet=null;
String worksheet = "List";//输出的excel文件工作表名
public Caozuo() {
try {
out=new FileOutputStream("E:\\a.xls");
wr=Workbook.createWorkbook(out);
sheet = wr.createSheet(worksheet, 0);
// WritableWorkbook wr = Workbook.createWorkbook(new File("E:\\a.xls"));
// //out=new FileOutputStream("E:\\a.xls");
// is = new FileInputStream("E:\\a.xls");//创建一个输入流
// rwb = Workbook.getWorkbook(is);//创建只读工作薄
// //wr=Workbook.createWorkbook(out);
// wr=Workbook.createWorkbook(new File("E:\\a.xls"), rwb);//创建可写的工作薄 } catch (Exception e) {
e.printStackTrace();
}
} public ArrayList Select() {
ArrayList arr = new ArrayList();
Sheet rs = rwb.getSheet(0);//读取第一个表
for (int i = 0; i < rs.getRows(); i++) {
ArrayList arr1 = new ArrayList();
for (int k = 0; k < rs.getColumns(); k++) {
Cell c00 = rs.getCell(k, i);//k表示列,i表示行,注列和行从0开始
String strc00 = c00.getContents();//getContents()方法是将Cell转换为字符串形式
arr1.add(strc00);
}
arr.add(arr1);
}
rwb.close();
return arr;
} public void Insert() throws RowsExceededException, WriteException, IOException {
WritableSheet rs = wr.getSheet(0);//查找表一
//WritableSheet rs = (WritableSheet)rwb.getSheet(0);
int rownumber = rs.getRows();//多少行
int cellnumber = rs.getColumns();//多少列
for (int k = 0; k < cellnumber; k++) {
jxl.write.Label labelC = new jxl.write.Label(k,rownumber,"这是第'"+rownumber+"'行,第'"+k+"'列");
labelC.setString("fdsadf");
//k表示哪一列,rownumber表示哪一行,从而定向到某个单元格,第三个参数是单元格内的内容
rs.addCell(labelC);//把此单元格放入表中
}
wr.write();//写入
wr.close();
}
public String GoujianTable(String s ) throws Exception{
int rownumber=s.split(";").length;
int cellnumber=s.split(";")[0].split(",").length;
String [] slist=s.split(";");
String talbeString="<table >";
for(int i=0; i<rownumber;i++){
String [] sllist=slist[i].split(",");
talbeString=talbeString+"<tr>";
for(int k=0;k<cellnumber-1;k++){
talbeString=talbeString+"<td>";
talbeString=talbeString+sllist[k];
talbeString=talbeString+"</td>";
}
talbeString=talbeString+"</tr>";
}
talbeString=talbeString+"</table>";
return talbeString;
}
public void Inserted(String s ) throws Exception{
int rownumber=s.split(";").length;
int cellnumber=s.split(";")[0].split(",").length;
WritableSheet rs = wr.getSheet(0);//查找表一
String [] slist=s.split(";");
for(int i=0; i<rownumber;i++){
String [] sllist=slist[i].split(",");
for(int k=0;k<cellnumber;k++){
jxl.write.Label labelC = new jxl.write.Label(k,i,sllist[k]);
rs.addCell(labelC);
System.out.println("22");
}
}
wr.write();//写入
System.out.println("**********************");
wr.close();
}
public void Delete(int id) throws IOException, WriteException{//id表示行号
WritableSheet rs=wr.getSheet(0);//查找表一
rs.removeRow(id-1);//删除行
wr.write();//从内存中写入
wr.close();
}
public void Update(int rowid,int columid,String cansu) throws RowsExceededException, WriteException, IOException{
WritableSheet rs=wr.getSheet(0);
//因为行和列都是从0开始,所以要减一
jxl.write.Label labelC = new jxl.write.Label(columid-1,rowid-1,cansu);
//WritableCell cell=(WritableCell) rs.getCell(columid-1,rowid-1);
rs.addCell(labelC);
wr.write();//写入
wr.close();
}
}
把你页面上面table的字符串取过来,然后传入GoujianTable()方法就搞定了
workbookSettings.setEncoding("ISO-8859-1"); //关键代码,解决中文乱码
Workbook workbook=Workbook.getWorkbook(is,workbookSettings);is 是个输入流,具体代码我忘了,这几行代码是为了改变编码方式的。你可以去找找改变jxl编码方式的例子,这三行代码原来是我写的
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />