1.jxl想做一个通用的java文件,只需变化sql语句,导出的excel和sql语句查询结果像同
    请问大侠怎么搞,一直想,我也没有想出所以然来另外
2.为什么我的sheet.setRowView(0,1000);在导出的excel中第一行列高50不是1000

解决方案 »

  1.   

    那就写一个程序执行输入的sql语句
    然后把查询的结果输出到excel不久可以了?你可以分几步写
    1,先做一个执行sql的函数
    2,做结果输出到excel的函数
    3,1,2连接起来
      

  2.   

    这是我的一段代码,你可以写一个类,把查询结果组装成为数组,然后再有这个类来处理输出成文Excel。
    import java.io.OutputStream;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRichTextString;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    public class ExcelImportButton{
        private static final long serialVersionUID = 1L;
    private String fileName;
    private Object[][] dataObjects;
    private String[] titles;
    public ExcelImportButton() {
    addActionListener(this);
    this.setText("导出Excel表格");
    }
    public String getContentType() {
    return "xls";
    }
    public String getFileName() {
    if (fileName == null) {
    SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
    return format.format(new Date()) + ".xls";
    } else
    return fileName;
    } public int getSize() {
    return 0;
    } /**
     * 第二根据数据量分sheet
     * cell.setCellValue(new HSSFRichTextString("我是单元格!")); 取代cell.setCellValue("");
     */
    public void writeFile(OutputStream out) {
    try{HSSFWorkbook workbook = new HSSFWorkbook();
    if(titles==null||titles.length==0){
        throw new NullPointerException("Excel-titles为空");
    }
    if(dataObjects==null||dataObjects.length==0){
        throw new NullPointerException("Excel-dataObjects为空");
    }
    //将dataObjects封装到小的dataObject中,以number为单位,再分别装到每个sheet
    int number = 500;//每个sheet最多500条数据
    ArrayList<Object[][]> aloss = new ArrayList<Object[][]>();
    for(int q=0; q<dataObjects.length; q=q+number){
        ArrayList<Object[]> v =new ArrayList<Object[]>();
        for(int w=q;w<q+number;w++){
         if(w >= dataObjects.length)
         break;
         v.add(dataObjects[w]);
        }
        if(v.size()>0){
          Object temp [][]= new Object[v.size()][];
          v.toArray(temp);
          aloss.add(temp);
        }
    }


    for(int e=0;e<aloss.size();e++){
       Object[][] dataObject = aloss.get(e);
    HSSFSheet sheet = workbook.createSheet();//上面那个定义sheet名称的,条码打印机不识数据。
    HSSFRow row = sheet.createRow(0);
    for (int i = 0; i < titles.length; i++) {
    HSSFCell cell = row.createCell((short) i);
    cell.setCellValue(new HSSFRichTextString(titles[i]));
    }
    if (dataObject != null) {
    for (int i = 0; i < dataObject.length; i++) {
    row = sheet.createRow(i + 1);
    Object[] line = dataObject[i];
    if (line == null || line.length == 0) {
    continue;
    }
    for (int k = 0; k < line.length; k++) {
    HSSFCell cell = row.createCell((short) k);
    cell.setCellValue(new HSSFRichTextString(line[k] == null ? "暂未录入" : line[k]
    .toString()));
    }
    }
    }}
    workbook.write(out);
    out.flush();
    }catch(Exception e){
        e.printStackTrace();
    }
    }


    public void setDataObjects(Object[][] dataObjects) {
    this.dataObjects = dataObjects;
    } public void setTitles(String[] titles) {
    this.titles = titles;
    } public void setFileName(String fileName) {
    this.fileName = fileName;
    }
    }
      

  3.   

    这个没有什么好想的吧:
    1.根据sql查询出数据;
    2、把查询出的数据输出到excel文件不知楼主哪一步想不通?