Java操作Excel,Word

        
       今天听朋友介绍,了解了POI, apache组织的一个开源项目,提供了对Microsoft excel,word 的纯java
解决方案,http://jakarta.apache.org/poi/  里面可以下载到开发包,还有例子程序,用起来还是很方便的!

下面是一个将Oracle数据库表导出为Excel的程序:

import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;      //单元格
import org.apache.poi.hssf.usermodel.HSSFCellStyle; //单元格样式
import org.apache.poi.hssf.usermodel.HSSFDataFormat;//数据格式
import org.apache.poi.hssf.usermodel.HSSFFont;      //字体
import org.apache.poi.hssf.usermodel.HSSFHeader;    //头  
import org.apache.poi.hssf.usermodel.HSSFRow;       //行
import org.apache.poi.hssf.usermodel.HSSFSheet;     //一张记事簿
import org.apache.poi.hssf.usermodel.HSSFWorkbook;  //一个excel
import org.apache.poi.hssf.util.HSSFColor;          //颜色
import java.sql.*;


 

public class Test{
    
     public static void main(String[] args) throws  Exception
     {
       String filename = "dept.xls";
       String column_name="";
       PreparedStatement ps=null;  //预编译
       Connection conn=null;      //连接
       Statement smt=null;         //sql语句
       ResultSet rs = null,rs1=null;        //结果集合
       ResultSetMetaData md = null;         
      long rowCount =0l;               //总行数
        try{
      
        Class.forName("oracle.jdbc.driver.OracleDriver");
        }catch(Exception e){
         e.printStackTrace();
        }
        String url = "jdbc:oracle:thin:@172.18.2.114:1521:MIS";
        String userName = "scott";
        String password = "tiger";
        conn = DriverManager.getConnection (url, userName, password);
        smt = conn.createStatement();
       
        //取得总记录数
        String sql="select deptno,dname,loc from dept";
        String sqlqeury="select count(*) as total from (  "+sql+"  )";
        try{
             rs = smt.executeQuery(sqlqeury);
             if(rs.next()){
                 rowCount =rs.getLong("total");
                 System.out.print(rowCount) ; //记录总数
              }
          }catch(Exception e){
           System.out.print("aaa");
                 e.printStackTrace();
                 System.out.println(e.getMessage());
                 conn.close();   //异常后关闭连接
                 throw new Exception("获得记录总数失败");
           }
        
         //处理sql语句
         try{
              rs1 = smt.executeQuery(sql);
              md = rs1.getMetaData();
               System.out.print(md.getColumnCount());
          }catch(Exception e){
            System.out.print("bbb");
                e.printStackTrace();
                System.out.println(e.getMessage());
                conn.close();   //异常后关闭连接
                throw new Exception("传入的SQL无法处理");
         }
        
        
        //生成excel代码
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet("new sheet");
        HSSFRow row = null;
        HSSFCell cell=null;
        for(long i =0;i<=rowCount;i++){
           
            row = sheet.createRow((short)i);                     //创建一个行
            for(int j =0;j<md.getColumnCount();j++){
             
               cell = row.createCell((short)j);                  //创建单元格
               cell.setEncoding(HSSFCell.ENCODING_UTF_16);
               if(i==0){   
                  cell.setCellValue(md.getColumnName(j+1));     //设定单元格的值
               }else{
                  cell.setCellValue(rs1.getString(j+1));        //设定单元格的值
                }
             }
             rs1.next();
         }
        //写到excel中!
        FileOutputStream fileOut = new FileOutputStream(filename);
        wb.write(fileOut);          //向fileout文件写
        fileOut.close();            //关闭文件输出流
        conn.close();               //关闭正常连接  
   }
  
}

 

                                                     2004.12.22   
                                                     ladofwind@163.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以使用不同的方式来导出ExcelWord文档。引用\[1\]和引用\[2\]展示了两种常见的导出ExcelWord文档的方式。在这两种方式中,通过设置response的header来指定导出文件的名称和类型,然后将生成文件内容输出到response中。这样用户就可以通过浏览器下载并打开导出的文件。 另外,引用\[3\]提到了一些导出Word文档的方式的缺点。第一种方式只能生成简单的Word文档,无法生成带有表格的Word文档。第二种方式需要进行多次转换,不适合内容经常变更的文档。第三种方式可能不适合对格式要求严格的文档。 总结来说,Java可以使用不同的方式来导出ExcelWord文档,选择合适的方式取决于具体的需求和要求。 #### 引用[.reference_title] - *1* *2* [java页面导出excel实例,java页面导出word文档实例](https://blog.csdn.net/abcdefpm/article/details/50507351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [java导出excelword文档](https://blog.csdn.net/persistence_PSH/article/details/124361334)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值