标签:
在做计量泵上位机软件时,需要将下位机传上来的数据,存入MYSQL数据库,显示在java 上位机界面上,并能导出至电脑指定位置。
选择存储路径和文件名:
// 处理另存文件的菜单 public void ExportExcelFile(String Sql,String []Paras) { String AbsolutePath=""; // 设置对话框的风格 try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } JFileChooser jFileChooser = new JFileChooser(); // jFileChooser.setMultiSelectionEnabled(true);//如果要多选的话,设置这句话即可 // 设置默认的保存文件名称,注意如果这样设置了之后,后面就无法取得用户改变之后的文件存储路径了,因为后面调用的 jFileChooser.getCurrentDirectory()获取的路//径就是你设置的默认文件的路径 // jFileChooser.setSelectedFile(new // File("默认文件名称")); int result = jFileChooser.showSaveDialog(null); switch (result) { case JFileChooser.APPROVE_OPTION: System.out.println("11"); // 这一种方法是把用户输入的作为保存的文件名 保存为excel表格 .xls AbsolutePath = jFileChooser.getCurrentDirectory() + File.separator + jFileChooser.getSelectedFile().getName() + ".xls"; //.xls 为输出excel表格 也可以指定其他格式 SqlHelper sqlHelper=new SqlHelper(); ResultSet rs=sqlHelper.query(Sql, Paras); File file=new File(AbsolutePath); try { this.writeExcel(rs, file); //导出数据方法 } catch (SQLException e1) { e1.printStackTrace(); } JOptionPane.showMessageDialog(null, "导出数据成功!"); break; case JFileChooser.CANCEL_OPTION: JOptionPane.showMessageDialog(null, "取消导出!!"); break; case JFileChooser.ERROR_OPTION: //System.out.println("出错啦!!"); break; } }
//导出数据方法:
//需要一个结果集合rs 和 file文件
public void writeExcel(ResultSet rs,File file) throws SQLException{ WritableWorkbook workbook = null; //从rs对象中可以得到ResultSetMetaData ,从而可以得到表的列名 ResultSetMetaData rsmt=rs.getMetaData(); try{ //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象 workbook = Workbook.createWorkbook(file); } catch (IOException e){ e.printStackTrace(); } if(workbook!=null){ WritableSheet wsheet = workbook.createSheet("sheet1", 0); try { //获得表的列名 for(int i=0;i<rsmt.getColumnCount();i++) { Label label_column1 = new Label(i, 0, rsmt.getColumnName(i+1)); wsheet.addCell(label_column1); } } catch (RowsExceededException e1) { e1.printStackTrace(); } catch (WriteException e1) { e1.printStackTrace(); } //获得表的内容 int i=1; while(rs.next()){ for(int j=0;j<rsmt.getColumnCount();j++) { Label label1 = new Label(j, i, rs.getString(j+1)); try { wsheet.addCell(label1); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } } i++; } try { //从内存中写入文件中 workbook.write(); //关闭资源,释放内存 workbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e){ e.printStackTrace(); } } }
Java JTable 表格 获取存储路径,文件名 ,导出excel表格
标签:
原文地址:http://www.cnblogs.com/wuyun-blog/p/4412327.html