在服务器端实现吗?那样用poi很容易实现的啊

解决方案 »

  1.   

    这是我自己写的hellowrold程序,你参考一下吧
    需要你下载apache的poi jar包
    package com.huida.mypoi;import java.io.FileOutputStream;
    import java.util.Date;import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFDataFormat;
    import org.apache.poi.hssf.usermodel.HSSFFont;
    import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hssf.util.HSSFColor;
    import org.apache.poi.hssf.util.Region;public class MyPOI {
        public static void main(String args[]) {
         try{
         //crate a new workbook
        HSSFWorkbook wb = new HSSFWorkbook();
        
        //create worksheet
        HSSFSheet sheet1 = wb.createSheet("new sheet");
        HSSFSheet sheet2 = wb.createSheet("second sheet");
        
        /*向sheet1中写入数据*/
        //绘制表头
        HSSFRow oRow=sheet1.createRow((short)0);
        oRow.createCell((short)0).setCellValue("姓名");
        oRow.createCell((short)1).setCellValue("语文");
        oRow.createCell((short)2).setCellValue("数学");
        oRow.createCell((short)3).setCellValue("总分");     
        
        //向表格体写入数据
        for(int i=1;i<=10;i++){
         oRow=sheet1.createRow((short)i);
         oRow.createCell((short)0).setCellValue("user-"+i);
         oRow.createCell((short)1).setCellValue(1);
         oRow.createCell((short)2).setCellValue(2);
         oRow.createCell((short)3).setCellFormula("AVERAGE(B2:C2)");     
        }
        
        /*向sheet2写入数据*/
        //绘制表头
        oRow=sheet2.createRow((short)0);
        oRow.createCell((short)0).setCellValue("姓名");
        oRow.createCell((short)1).setCellValue("科目");
        oRow.createCell((short)2).setCellValue("成绩");
        oRow.createCell((short)3).setCellValue("平均");
        
        //向表格体写入数据
        String greadMessage[][]={
         {"郑学进","语文","75"},
         {"郑学进","数学","80"},
         {"张玉斌","语文","82"},
         {"张玉斌","数学","93"},
         {"张玉斌","英语","97"},
         {"张玉斌","政治","77"},
         {"于小刚","语文","33"},
         {"于小刚","数学","92"},
         {"于小刚","英语","75"}
        };
        
        if(greadMessage.length>0){
        String strName=greadMessage[0][0];
        int nMergeStart=1,nMergeEnd;
        for(int i=1,nLen=greadMessage.length;i<=nLen;i++){
         //若姓名发生变化或最后一条记录时,合并单元格
         if((!strName.equals(greadMessage[i-1][0])||i==nLen)){
         sheet2.getRow(nMergeStart).getCell((short)0).setCellValue(strName);
         if(i>nMergeStart){
         //计算合并单元格的下坐标
         nMergeEnd=i==nLen?i:i-1;
         //合并姓名单元格
         sheet2.addMergedRegion(new Region(
         nMergeStart,(short)0,nMergeEnd,(short)0
             ));
         //合并并计算平均分
         sheet2.addMergedRegion(new Region(
             nMergeStart,(short)3,nMergeEnd,(short)3
         ));
         sheet2.getRow(nMergeStart).getCell((short)3).setCellFormula(
         "average(c"+(nMergeStart+1)+";c"+(nMergeEnd+1)+")"
         );
             
         }
         nMergeStart=i;
         strName=greadMessage[i-1][0];     
         }
        
         oRow=sheet2.createRow(i);
         oRow.createCell((short)0);
         oRow.createCell((short)1).setCellValue(greadMessage[i-1][1]);
         oRow.createCell((short)2).setCellValue(
            Integer.parseInt(greadMessage[i-1][2])
         );
         oRow.createCell((short)3);
        }
        }
        
        //Save and close workbook
        FileOutputStream fileOut = new FileOutputStream("c:\\workbook.xls");
        wb.write(fileOut);
        fileOut.close();
         }catch(Exception err){
         System.out.println(err.getMessage());
         }
        }
    }