jxl想做一个通用的java文件,只需变化sql语句,导出的excel和sql语句查询结果像同
1.jxl想做一个通用的java文件,只需变化sql语句,导出的excel和sql语句查询结果像同
     请问大侠怎么搞,一直想,我也没有想出所以然来另外
2.为什么我的
Java code
sheet.setRowView(0,1000);
在导出的excel中第一行列高50不是1000
------解决方案--------------------那就写一个程序执行输入的sql语句
然后把查询的结果输出到excel不久可以了?
你可以分几步写
1,先做一个执行sql的函数
2,做结果输出到excel的函数
3,1,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();
		}
	}