日期:2014-05-19  浏览次数:20736 次

java操作excl导入导出oracle数据库啊
如题,求助,最好是在myeclipse上能直接跑起来代码项目!谢谢!

------解决方案--------------------
Java code

package com.test;

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

/**
 * 生成excel的工具类,不用模板
 * @version 2.0
 * */
public class ExportExcel {
    
    private static ExportExcel bean = new ExportExcel();
    public static ExportExcel getBean() {
        return bean;
    }
    
    private FileOutputStream output;
    private WritableWorkbook book;
    
    /**
     * 导出excel生成文件
     * @param base 根目录(文件存放的目录)
     * @param fileName 文件名
     * @param fullDatas 要导出的数据(这里必须存放String类型的数组)
     * @param title 文件的标题(第一行)
     * @param coteWidths 每一列的宽度
     * @param titles 表头标题
     * @param numCote 需要数字格式化的列的索引
     * @return String 返回输出文件的物理路径
     * */
    @SuppressWarnings("unchecked")
    public String reportExcel(String base, String fileName, List fullDatas, 
            String title, int[] coteWidths, String[] titles, int[] numCote) {
        try {
            createFolder(base);//如果文件夹不存在就创建
            String filePath = base + fileName;//输出文件路径
            WritableCellFormat cellFormat = new WritableCellFormat();
            cellFormat.setAlignment(Alignment.CENTRE);//居中显示
            WritableSheet sheet = getExcel(filePath, title, coteWidths, titles);//获得工作簿
            if(null != sheet){
                for(int i = 0; i < fullDatas.size(); i++){
                    String[] fullData = (String[]) fullDatas.get(i);
                    if(fullData.length == coteWidths.length){//确保数据个数一致
                        for (int j = 0; j < fullData.length; j++) {
                            boolean isNumeric = false;//判断该列是否需要数字化格式
                            if(null != numCote && numCote.length > 0){
                                for(int c = 0; c < numCote.length; c++){
                                    if(j == numCote[c]){
                                        isNumeric = true;
                                        break;
                                    }
                                }
                            }
                            if(isNumeric){
                                Double numeric = Double.parseDouble(fullData[j]);
                                Number number = new Number(j, i + 2, numeric, cellFormat);
                                sheet.addCell(number);//数字格式化
                            }else {
                                Label label = new Label(j, i + 2, fullData[j], cellFormat);
                                sheet.addCell(label);//文本数据
                            }                    
                        }
                    }                
                }
            }            
            book.write();
            book.close();
            output.close();        
            return filePath;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    // 生产excel工作簿
    private WritableSheet getExcel(String filePath, String title, int coteWidths[], String[] titles) {
        try {
            if(coteWidths.length != titles.length){
                return null;
            }
            output = new FileOutputStream(filePath);//文件输出流
            book = Workbook.createWorkbook(output); // 创建文件
            WritableSheet sheet = book.createSheet("sheet", 0); // 创建工作薄
            //标题样式
            WritableFont headFont = new WritableFont(
                    WritableFont.ARIAL, 15, WritableFont.BOLD, false,
                    UnderlineStyle.NO_UNDERLINE, Colour.BLACK);