需要Java Excel API实现写入excel文档的方法!
你先做成一个简单的写入excel的java类,参数为你要写入的那些项
关于如何写入数据项的方法WriteData(para1,para2,para3,.....),可以看看这里的解释
http://www-900.cn.ibm.com/developerWorks/cn/java/l-javaExcel/#1然后你在你的rs中调用就可以了。
while(rs.next())

  str1 = rs.get..
  str2 = rs.get..
  ...
WriteData(str1 ,str2 ....);
}

解决方案 »

  1.   

    方法一:用POI
    The POI project consists of APIs for manipulating various file formats based upon Microsoft's OLE 2 Compound Document format using pure Java. Support for reading and writing Microsoft Excel files and property information is mature and work continues on reading and writing the MS Word format. 
    You can find the website at http://jakarta.apache.org/poi/ 方法二:用JExcelAPI
    Java Excel API - A Java API to read, write, and modify Excel spreadsheets
    http://jexcelapi.sourceforge.net/^_^
      

  2.   

    我下载了java Excel Api,可是怎么在java项目里配置使用它呢?
      

  3.   

    估计应该需要专门的驱动吧,就类似数据库操作中JDBC差不多的东西
      

  4.   

    只要有表格,就会有Microsoft Excel,用Microsoft Excel处理数据已成为不少人的习惯。Jakarta POI API就为Java程序员提供了一条存取Microsoft文档格式的神奇之路,其中最成熟的就是能存取Microsoft Excel文档的HSSF API。 本篇文章就举例示范如何利用Java 创建和读取Excel文档,并设置单元格的字体和格式。   为了保证示例程序的运行,必须安装Java 2 sdk1.4.0 和Jakarta POI,Jakarta POI的Web站点是: http://jakarta.apache.org/poi/   创建Excel 文档  示例1将演示如何利用Jakarta POI API 创建Excel 文档。   示例1程序如下:
    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.FileOutputStream;
    public class CreateXL { /** Excel 文件要存放的位置,假定在D盘JTest目录下*/ public static String outputFile="D:/JTest/ gongye.xls"; public static void main(String argv[]){ try{  // 创建新的Excel 工作簿  HSSFWorkbook workbook = new HSSFWorkbook();  // 在Excel工作簿中建一工作表,其名为缺省值
          // 如要新建一名为"效益指标"的工作表,其语句为:
          // HSSFSheet sheet = workbook.createSheet("效益指标");  HSSFSheet sheet = workbook.createSheet();  // 在索引0的位置创建行(最顶端的行)  HSSFRow row = sheet.createRow((short)0);  //在索引0的位置创建单元格(左上端)
      HSSFCell cell = row.createCell((short) 0);
      // 定义单元格为字符串类型
      cell.setCellType(HSSFCell.CELL_TYPE_STRING);
      // 在单元格中输入一些内容
      cell.setCellValue("增加值");
      // 新建一输出文件流
      FileOutputStream fOut = new FileOutputStream(outputFile);
      // 把相应的Excel 工作簿存盘
      workbook.write(fOut);
      fOut.flush();
      // 操作结束,关闭文件
      fOut.close();
      System.out.println("文件生成..."); }catch(Exception e) {
      System.out.println("已运行 xlCreate() : " + e );
     }
    }
    }  读取Excel文档中的数据  示例2将演示如何读取Excel文档中的数据。假定在D盘JTest目录下有一个文件名为gongye.xls的Excel文件。  示例2程序如下:
    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.FileInputStream;
    public class ReadXL {
     /** Excel文件的存放位置。注意是正斜线*/
     public static String fileToBeRead="D:/JTest/ gongye.xls";
     public static void main(String argv[]){ 
     try{
      // 创建对Excel工作簿文件的引用
      HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
      // 创建对工作表的引用。
      // 本例是按名引用(让我们假定那张表有着缺省名"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) {
      System.out.println("已运行xlRead() : " + e );
     }
    }
    }  设置单元格格式  在这里,我们将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:  1、创建字体,设置其为红色、粗体:
    HSSFFont font = workbook.createFont();
    font.setColor(HSSFFont.COLOR_RED);
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  2、创建格式
    HSSFCellStyle cellStyle= workbook.createCellStyle();
    cellStyle.setFont(font);  3、应用格式 
    HSSFCell cell = row.createCell((short) 0);
    cell.setCellStyle(cellStyle);
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    cell.setCellValue("标题 ");  总之,如本篇文章所演示的一样,Java程序员不必担心Excel工作表中的数据了,利用Jakarta POI API,我们就可以轻易的在程序中存取Excel文档。
      

  5.   

    这篇文章我已经搜到了。谢谢!
    我决定用java Excel Api,我现在已经将jxl.jar添加到我的项目中了,这样在项目里就可以用import jxl.*了。
      

  6.   

    请问如果用Arias(道) 的方法,rs的列数是不定的,怎样构造一个适合不同列的rs的通用的WriteData()呢?
      

  7.   

    况且,那个http://www-900.cn.ibm.com/developerWorks/cn/java/l-javaExcel/的介绍只是在创建的Excel文件里添加了常量,并不是传递的数据阿。我想做的是不指定targetfile的名字,而是先生成一个Excel文件,然后让用户保存,请问可以做到么?怎么做呢?
      

  8.   

    最最简单的方式通过jdbc-odbc桥来写入
      

  9.   

    最简单的方法:
    StringBuffer buf = new StringBuffer();
    while(rs.next)
    {
        buf.append(","+rs.getString(1));
        buf.append(","+rs.getString(2));
        buf.append(","+rs.getString(3));
        buf.append(","+rs.getString(4));
        ...
        buf.append("\r");
    }
    rs.close();
    然后将buf内容存为扩展名为.csv的文件就行了,excel就可以开它了。
      

  10.   

    可是我们联接数据库不是用的jdbc-odbc桥的。
    java Excel Api不可以解决么?
      

  11.   

    turbochen(程序员):可是这样的话,格式会乱的,我想要和Excel一样的格式。这样用户做一些改动的动作都方便
      

  12.   

    其实你为什么要存到list的呢?
    你读取的数据库不是excel而是其他数据库吗?
    假设mysql->excel  呵呵开两个connect一个读一个写(jdbc-odbc)就是了
      

  13.   

    我们不能通过jdbc-odbc来写,因为我们是通过ofbiz的xml配置文件连数据库,而且用struts架构。
      

  14.   

    我用java Excel Api,是这样做的:
    将Result rs传入WriteData(ResultSet rs) 来进行查询结果的输出:
    private void WriteData(ResultSet rs)
    {
       try
       {
           WritableWorkbook wwb = Workbook.createWorkbook(new File("d:/myexcel.xls"));
           jxl.write.WritableSheet ws = wwb.createSheet("Stock Sheet 1", 0);
           try
           {
       while (rs.next())
      {
           String productId = (String) rs.getString("product_Id");
           String proNo = (String) rs.getString("product_No");
           String proName = rs.getString("product_Name");
           String description = rs.getString("description");
           String abbreviation = rs.getString("abbreviation");
           String proSpec = rs.getString("id_Value");
           String onhandQty = rs.getString("quantity_on_hand");
           String underwayQty = rs.getString("quantity_under_way");
           String promisedQty = rs.getString("quantity_promised");
           int i = rs.getRow();
           jxl.write.Label labelA = new jxl.write.Label(i, 0, proNo);
           jxl.write.Label labelB = new jxl.write.Label(i, 1, proName);
           jxl.write.Label labelC = new jxl.write.Label(i, 2, description);
           jxl.write.Label labelD = new jxl.write.Label(i, 3, abbreviation);
           jxl.write.Label labelE = newjxl.write.Label(i, 4, proSpec);
           ws.addCell(labelA);
           ws.addCell(labelB);
                    ws.addCell(labelC);
                    ws.addCell(labelD);
                    ws.addCell(labelE);

        }
        wwb.write();
                 wwb.close();
    } catch (....)
    {....} 
         }catch (....)
    {....} 
    }
    可是执行到jxl.write.WritableSheet ws = wwb.createSheet("Stock Sheet 1", 0)这一句的时候,报错“COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0125E  函数顺序错误。 SQLSTATE=HY010”,这是为什么呢?难道这样写不对么?
      

  15.   

    奥,错了错了,是执行完while (rs.next())后报的错
      

  16.   

    而且jxl.write.Label labelA = new jxl.write.Label(i, 0, proNo)里面如何让他显示utf8的汉字呢?
      

  17.   

    utf8代码显示中文的问题我已经解决了。
    剩下的问题就是:
    1 while(rs.next())处出错“COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0125E  函数顺序错误。 SQLSTATE=HY010”。
    2 怎样不在程序中指定Excel文件的名称而弹出window保存文件的对话框,让用户自己去保存Excel文件。
    3 如果我的纪录太多,如何让sheet达到10000行就再生成新的sheet
      

  18.   

    难道问题2、3,java Excel Api就不能解决么?