POI导出

使用java将数据库中的数据导出到excel中
我现在要实现的是使用java语句实现蒋mysql数据库中数据导出到excel中来,另外的功能是将excel中的数据导入到数据库中,求教高手,最好是程序,我用的包是jxl.jar包.
 
      
用jxl来实现  
  import   jxl.Cell;  
  import   jxl.Sheet;  
  import   jxl.Workbook;public   String   importEnter(HttpServletRequest   request)   {  
  Connection   conn   =   null;  
  PreparedStatement   ps   =   null;  
  OpenDbBean   db   =   new   OpenDbBean();  
  String   message   =   "";  
  try   {  
  ServletInputStream   is   =   request.getInputStream();  
  byte[]   junk   =   new   byte[1024];  
  int   bytesRead   =   0;  
  //去掉浏览器发送的垃圾信息  
  bytesRead   =   is.readLine(junk,   0,   junk.length);  
  bytesRead   =   is.readLine(junk,   0,   junk.length);  
  bytesRead   =   is.readLine(junk,   0,   junk.length);  
  bytesRead   =   is.readLine(junk,   0,   junk.length);  
  Workbook   workbook   =   Workbook.getWorkbook(is);  
 //取得第一个工作录  
  Sheet   sheet   =   workbook.getSheet(0);  
  //从第二行开始取数据并处理  
  Enter   enter   =   new   Enter();  
  //连接数据库  
  conn   =   db.getConnection();  
  String   sql   =  
  "insert   into   haocai_enter(enter_id,enter_time,amount,jsr,type_id,xh)"  
  +   "   values(s_enter_id.nextval,to_date(?,'dd/mm/yyyy'),?,?,?,?)";  
  ps   =   conn.prepareStatement(sql);  
  int   okCount   =   0;  
  ArrayList   errorRows   =   new   ArrayList();  
  for   (int   i   =   1;   i   <   sheet.getRows();   i++)   {  
  DB   mydb   =   new   DB();  
  Cell[]   c   =   sheet.getRow(i);  
  String   type_id   =   enter.getTypeIdByPm(c[PM].getContents());  
  if   (type_id   !=   null)   {  
  //设置入库数据  
  ps.setString(1,   c[ENTER_TIME].getContents());  
  ps.setString(2,   c[AMOUNT].getContents());  
  ps.setString(3,   c[JSR].getContents());  
  ps.setString(4,   type_id);  
  ps.setString(5,   c[XH].getContents());  
  ps.addBatch();  
  okCount++;  
  }   else   {  
  message   +=   "<br>第"   +   i   +   "行   "   +   c[PM].getContents()   +   "   导入失败";  
  }  
  }  
  //执行该批过程  
  if   (okCount   >   0)   {  
  ps.executeBatch();  
  }  
  message   +=   "<br>成功导入"   +   okCount   +   "   行";  
  workbook.close();  
  }   catch   (Exception   e)   {  
  System.out.println(e.getMessage());  
  message   +=   "<br>"   +   e.getMessage();  
  }   finally   {  
  try   {  
  db.CleanConnection(conn,   ps,   null);  
  }   catch   (SQLException   e1)   {  
  e1.printStackTrace();  
  }  
  }  
  return   message;  
  }

用jxl.jar或者poi都可以,poi可以到apache网站上去下。  
   
  利用Java   创建和读取Excel文档  
  为了保证示例程序的运行,必须安装Java   2   sdk1.4.0   和Jakarta   POI,Jakarta   POI的Web站点是:   http://jakarta.apache.org/poi/    
   
  示例1将演示如何利用Jakarta   POI   API   创建Excel   文档。    
   
   
   
  示例1程序如下:  
  import   org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  import   org.apache.poi.hssf.usermodel.HSSFSheet;  
  import   org.apache.poi.hssf.usermodel.HSSFRow;  
  import   org.apache.poi.hssf.usermodel.HSSFCell;  
  import   java.io.FileOutputStream;  
  public   class   CreateXL   {  
 /**   Excel   文件要存放的位置,假定在D盘JTest目录下*/  
   public   static   String   outputFile="D:/JTest/   gongye.xls";  
   public   static   void   main(String   argv[])  
      {  
   try  
      {  
    //   创建新的Excel   工作簿  
    HSSFWorkbook   workbook   =   new   HSSFWorkbook();  
    //   在Excel工作簿中建一工作表,其名为缺省值  
    //   如要新建一名为"效益指标"的工作表,其语句为:  
    //   HSSFSheet   sheet   =   workbook.createSheet("效益指标");  
    HSSFSheet   sheet   =   workbook.createSheet();  
    //   在索引0的位置创建行(最顶端的行)  
    HSSFRow   row   =   sheet.createRow((short)0);  
    //在索引0的位置创建单元格(左上端)  
    HSSFCell   cell   =   row.createCell((short)   0);  
    //   定义单元格为字符串类型  
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);  
    //   在单元格中输入一些内容  
    cell.setCellValue("增加值");  
    //   新建一输出文件流  
    FileOutputStream   fOut   =   new   FileOutputStream(outputFile);  
    //   把相应的Excel   工作簿存盘  
    workbook.write(fOut);  
    fOut.flush();  
    //   操作结束,关闭文件  
    fOut.close();  
    System.out.println("文件生成...");  
   
   
   
   }catch(Exception   e)   {  
    System.out.println("已运行   xlCreate()   :   "   +   e   );  
   }  
  }  
  }  
   
   
   
  读取Excel文档中的数据  
    示例2将演示如何读取Excel文档中的数据。假定在D盘JTest目录下有一个文件名为gongye.xls的Excel文件。  
    示例2程序如下:  
  import   org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  import   org.apache.poi.hssf.usermodel.HSSFSheet;  
  import   org.apache.poi.hssf.usermodel.HSSFRow;  
  import   org.apache.poi.hssf.usermodel.HSSFCell;  
  import   java.io.FileInputStream;  
  public   class   ReadXL   {  
   /**   Excel文件的存放位置。注意是正斜线*/  
   public   static   String   fileToBeRead="D:/JTest/   gongye.xls";  
   public   static   void   main(String   argv[]){    
   try{  
    //   创建对Excel工作簿文件的引用  
    HSSFWorkbook   workbook   =   new   HSSFWorkbook(new   FileInputStream(fileToBeRead));  
    //   创建对工作表的引用。  
 //   本例是按名引用(让我们假定那张表有着缺省名"Sheet1")  
    HSSFSheet   sheet   =   workbook.getSheet("Sheet1");  
    //   也可用getSheetAt(int   index)按索引引用,  
    //   在Excel文档中,第一张工作表的缺省索引是0,  
    //   其语句为:HSSFSheet   sheet   =   workbook.getSheetAt(0);  
    //   读取左上端单元  
    HSSFRow   row   =   sheet.getRow(0);  
    HSSFCell   cell   =   row.getCell((short)0);  
    //   输出单元内容,cell.getStringCellValue()就是取所在单元的值  
    System.out.println("左上端单元是:   "   +   cell.getStringCellValue());    
   }catch(Exception   e)   {  
    System.out.println("已运行xlRead()   :   "   +   e   );  
   }  
  }  
  }  
   
   
   
   
    设置单元格格式  
    在这里,我们将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java  
   
   
   
  中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:  
   
   
   
    1、创建字体,设置其为红色、粗体:  
  HSSFFont   font   =   workbook.createFont();  
  font.setColor(HSSFFont.COLOR_RED);  
  font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
    2、创建格式  
  HSSFCellStyle   cellStyle=   workbook.createCellStyle();  
  cellStyle.setFont(font);  
    3、应用格式    
  HSSFCell   cell   =   row.createCell((short)   0);  
  cell.setCellStyle(cellStyle);  
  cell.setCellType(HSSFCell.CELL_TYPE_STRING);  
  cell.setCellValue("标题   ");  
   
   
   
    总之,如本篇文章所演示的一样,Java程序员不必担心Excel工作表中的数据了,利用Jakarta   POI   API,  
   
   
   
  我们就可以轻易的在程序中存取Excel文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值