做了一个项目一个功能是将数据库中的数据导出到excel,不会做求大神指点数据库Excel

解决方案 »

  1.   

    个人用的比较多的是NPOI,在JAVA里面使用的POI,还是算比较通用的
      

  2.   

    没表结构,不知道excel里面要什么内容,连数据库是哪种都不知道,然后求完整代码。这帮提问的都是猪托生的吗。
      

  3.   

    先查出数据,再用jlx或者pol生成excel
      

  4.   

    public static String writeExcel(List listtitle, List listtype, List listcontent,List<Integer> widths,
    List<Boolean> iswrap, String filedirpath, String filesavename, String title, int titlesize) { File filepath = new File(filedirpath);
    if (filepath.exists()) {
    // log.info("路径已经存在!<br/>");
    } else {
    filepath.mkdir();
    }
    String sCurrPath = filedirpath + "/" + filesavename ;
    // String myfilepath = request.getRealPath(sCurrPath);
    File file = new File(sCurrPath);
    try {
    file.createNewFile();
    // 获取文件的URL地址
    } catch (Exception e) {
    // log.error("创建文件失败!");
    }
    // 以下开始输出到EXCEL
    try {
    /************ 创建工作簿 *************/
    WritableWorkbook workbook = Workbook.createWorkbook(new File(
    sCurrPath)); /************ 创建工作表 *************/ WritableSheet sheet = workbook.createSheet("导出项目", 0);
    // sheet.setPageSetup(5,true); /************ 设置纵横打印(默认为纵打)、打印纸 ******************/
    // sheet.setPageSetup(PageOrientation.LANDSCAPE.LANDSCAPE,0,0);
    // sheet.setPageSetup(PageOrientation.LANDSCAPE.LANDSCAPE,PaperSize.A4,0,0);
    // sheet.addRowPageBreak(12);
    jxl.SheetSettings sheetset = sheet.getSettings();
    sheetset.setProtected(false); // sheet.setColumnView(0,5);
    // sheet.setColumnView(1,12); /************** 设置单元格字体 ***************/
    WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10,WritableFont.BOLD);
    WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10,WritableFont.BOLD);
    WritableFont Font = new WritableFont(WritableFont.ARIAL, 10,WritableFont.NO_BOLD); /************** 以下设置几种格式的单元格 *************/
    // 用于正文居左
    WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);
    wcf_left.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条
    wcf_left.setVerticalAlignment(VerticalAlignment.TOP); // 文字垂直对齐
    wcf_left.setAlignment(Alignment.LEFT); // 文字水平对齐
    wcf_left.setWrap(false); // 文字是否换行 // 用于正文居右
    WritableCellFormat wcf_right = new WritableCellFormat(NormalFont);
    wcf_right.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
    wcf_right.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
    wcf_right.setAlignment(Alignment.RIGHT); // 文字水平对齐
    wcf_right.setWrap(false); // 文字是否换行 // 用于正文居中
    WritableCellFormat wcf_center = new WritableCellFormat(Font);
    // wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
    wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
    wcf_center.setAlignment(Alignment.CENTRE); // 文字水平对齐
    wcf_center.setWrap(false); // 文字是否换行

    // 用于正文居中标题
    WritableCellFormat wcf_title = new WritableCellFormat(NormalFont);
    wcf_title.setBorder(Border.ALL, BorderLineStyle.THICK); // 线条
    wcf_title.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
    wcf_title.setAlignment(Alignment.CENTRE); // 文字水平对齐
    wcf_title.setWrap(false); // 文字是否换行 // 用于跨行
    WritableCellFormat wcf_merge = new WritableCellFormat(BoldFont);
    wcf_merge.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
    wcf_merge.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
    wcf_merge.setAlignment(Alignment.CENTRE); // 文字水平对齐
    wcf_merge.setWrap(true); // 文字是否换行

    //换行加居左
    WritableCellFormat wcf_merge_left = new WritableCellFormat(Font);
    // wcf_merge.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
    wcf_merge.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
    wcf_merge.setAlignment(Alignment.LEFT); // 文字水平对齐
    wcf_merge.setWrap(true); // 文字是否换行 /************** 单元格格式设置完成 *******************/
    for(int i=0 ;i<widths.size();i++){
    sheet.setColumnView(i, widths.get(i));
    }
    /***************** 以下是定单内容 **********************/ sheet.mergeCells(0, 0, titlesize, 0);
    sheet.addCell(new Label(0, 0, title, wcf_center)); for (int i = 0; i < listtitle.size(); i++) {
    sheet.addCell(new Label(i, 1, (String) listtitle.get(i),
    wcf_title));
    } for (int i = 0; i < listcontent.size(); i++) { // 写入数据
    List contentlist = (List) listcontent.get(i); for (int j = 0; j < contentlist.size(); j++) {
    String datatype = (String) listtype.get(j);
    if ("string".equals(datatype)){
    if(iswrap.get(j)){
    sheet.addCell(new Label(j, i + 2, (String) contentlist
    .get(j), wcf_merge_left)); //换行
    }else{
    sheet.addCell(new Label(j, i + 2, (String) contentlist
    .get(j), wcf_center)); // 不换行
    }
    }
    else if ("float".equals(datatype)) {
    jxl.write.Number labelN = new jxl.write.Number(j,
    i + 2, new BigDecimal(
    (String) contentlist.get(j)).setScale(
    2, BigDecimal.ROUND_HALF_UP)
    .doubleValue());
    sheet.addCell(labelN);
    }
    }
    } /************ 以上所写的内容都是写在缓存中的,下一句将缓存的内容写到文件中 *********/
    workbook.write();
    /*********** 关闭文件 **************/
    workbook.close(); } catch (Exception e) {
    e.printStackTrace();
    // log.error("在输出到EXCEL的过程中出现错误,错误原因:" + e.toString());
    } return filesavename;
    }
      

  5.   

    您能不能将您做的发到我的邮箱  [email protected]  谢谢!!
      

  6.   

    谢谢各位!!希望你们能将自己做的发到小弟邮箱[email protected]  小弟感激不尽
      

  7.   

    http://blog.csdn.net/lenotang/article/details/2823230  进这里保证你马上会做了