<%@ page contentType="application/vnd.ms-excel; charset=gbk" %>
<% response.addHeader("Content-Disposition", "filename=" + filename + ".xls"); %>
jsp里我曾经用过这种方法导出成excel文件,记得以前是可以正常显示的,可是我现在用的时间出问题了,没有格式了,背景是白色的一片,Excel中的表格线显示不出来,谁遇到过,是怎么解决的!

解决方案 »

  1.   

    把样式都去掉,table的border改成1
      

  2.   


    要下载jxl.jar文件
    package com;import java.io.*;
    import java.util.ArrayList;
    import java.util.List;import jxl.*;
    import jxl.write.Label;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;public class ReadXLS {
    public static void main(String args[]) {
    try {
    Workbook book = Workbook.getWorkbook(new File(
    "d:\\convertTest\\dahuo.xls"));
    // 获得第一个工作表对象
    Sheet sheet = book.getSheet(0);
    // 得到第一列第一行的单元格
    // System.out.println(sheet.getColumns());//获得列数
    // System.out.println(sheet.getRows());//获得行数
    // Cell cell1 = sheet.getCell(0, 0);//获得第一行第一列的cell
    // System.out.println(cell1.getContents());//获得cell中的内容 List<CellBean> lc = new ArrayList<CellBean>();
    for (int i = 1; i < sheet.getRows(); i++) {
    CellBean c = new CellBean();
    for (int j = 0; j < sheet.getColumns(); j++) {
    Cell cell = sheet.getCell(j, i);
    switch (j) {
    case 0:
    c.setDate(cell.getContents());
    break;
    case 1:
    c.setOrder_no(cell.getContents());
    break;
    case 2:
    c.setPrice(Double.parseDouble(cell.getContents()));
    break;
    default:
    break;
    }

    System.out.print(cell.getContents() + "\t");
    }
    lc.add(c);
    System.out.println();
    } book.close(); Workbook b = Workbook.getWorkbook(new File(
    "d:\\convertTest\\guang.xls"));
    // 获得第一个工作表对象
    Sheet s = b.getSheet(0);
    // 得到第一列第一行的单元格
    // System.out.println(sheet.getColumns());//获得列数
    // System.out.println(sheet.getRows());//获得行数
    // Cell cell1 = sheet.getCell(0, 0);//获得第一行第一列的cell
    // System.out.println(cell1.getContents());//获得cell中的内容 List<CellBean> lcc = new ArrayList<CellBean>();
    for (int i = 0; i < s.getRows(); i++) {
    CellBean c = new CellBean();
    for (int j = 0; j < s.getColumns(); j++) {
    Cell cell = s.getCell(j, i);
    if (j==0) {
    c.setOrder_no(cell.getContents());
    }
    System.out.print(cell.getContents() + "\t");
    }
    lcc.add(c);
    System.out.println();
    } b.close();

    for (CellBean c : lcc) {
    for (CellBean c2 : lc) {
    String cs1=c.getOrder_no().trim();
    String cs2=c2.getOrder_no().trim();
    if (cs1.equals(cs2)) {
    lc.remove(c2);
    break;
    }

    }
    }


    //打开文件
    WritableWorkbook wb=Workbook.createWorkbook(new File("d:\\convertTest\\da.xls"));
    //生成名为“Sheet1”的工作表,参数0表示这是第一页
    WritableSheet ws=wb.createSheet("Sheet1",0);
    // //在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
    // //以及单元格内容为test
    // Label label=new Label(0,0,"test");
    // //将定义好的单元格添加到工作表中
    // ws.addCell(label);
    // /*生成一个保存数字的单元格
    // 必须使用Number的完整包路径,否则有语法歧义
    // 单元格位置是第二列,第一行,值为789.123*/
    // jxl.write.Number number = new jxl.write.Number(1,0,789.123);
    // ws.addCell(number); for (int i = 0; i < lc.size(); i++) {
    CellBean c=lc.get(i);
    for (int j = 0; j < 3; j++) {
    Label l=null;
    switch (j) {
    case 0:
    l=new Label(j,i,c.getDate());
    ws.addCell(l);
    break;
    case 1:
    l=new Label(j,i,c.getOrder_no());
    ws.addCell(l);
    break;
    case 2:
    jxl.write.Number n = new jxl.write.Number(j,i,c.getPrice());
    ws.addCell(n);
    break;
    default:
    break;
    }
    }
    }
    //写入数据并关闭文件
    wb.write();
    wb.close();
    System.out.println("create ok!");

    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }class CellBean {
    private String date;
    private String order_no;
    private double price; public String getDate() {
    return date;
    } public void setDate(String date) {
    this.date = date;
    } public String getOrder_no() {
    return order_no;
    } public void setOrder_no(String orderNo) {
    order_no = orderNo;
    } public double getPrice() {
    return price;
    } public void setPrice(double price) {
    this.price = price;
    }}
      

  3.   

    可以再服务器上在一个目录生成一个零时的excel文件,然后利用jsp页面下载该excel文件即可。
    把数据写入excel的代码可以利用jxl包,楼主可以参考下下面的链接,有源码:
    写入excel代码:http://blog.csdn.net/wgw335363240/archive/2010/06/17/5675424.aspx
    读取excel代码:http://blog.csdn.net/wgw335363240/archive/2010/06/13/5667733.aspx
    希望对你有用。
      

  4.   

    ls的几个回复我看了,注意我是jsp的那几个头文件生成excel的,不想用那种后台的技术,我知道后台可以做到,也试过,我现在要解决的问题是用jsp导出excel不能显示excel的表格线
      

  5.   


    <%response.setHeader("Content-disposition","attachment;filename=temp.xls");%>背景可以,表格自己加border ,Css不支持