POI 操作excel

import ql.sbs.bus.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.*;
import org.apache.poi.util.*;     //处理unicode字符
import org.apache.poi.hssf.record.*;

/**
* 注意:不要引入com.mysql.jdbc.* 包
* 不然会出现错误
* 测试POI和MySQL的代码
* author:qixiaorui
* 2005.4.1
*/


public class TestHSSF{
    Connection conn=null;
    Statement stmt = null;
    ResultSet rs = null;
    String sql="";   
    String[] headerNames={"编号","姓名","年龄","性别"};   //表头
    Vector values=new Vector(); //表格内容
  
    public TestHSSF(){
      checkXLS();
    }
    /**
     * 测试电子表格
     * 下载POI,解开JAR文件后将包拷贝到当前目录
     */
    public void checkXLS(){
      Vector vTmp=new Vector();
      vTmp.addElement(new Long(1));
      vTmp.addElement("张三");
      vTmp.addElement(new Integer(30));
      vTmp.addElement(new Boolean(true));
      values.addElement(vTmp);

      Vector vTmp1=new Vector();
      vTmp1.addElement(new Long(2));
      vTmp1.addElement("李四");
      vTmp1.addElement(new Integer(31));
      vTmp1.addElement(new Boolean(false));
      values.addElement(vTmp1);

      Vector vTmp2=new Vector();
      vTmp2.removeAllElements();
      vTmp2.addElement(new Long(3));
      vTmp2.addElement("王五");
      vTmp2.addElement(new Integer(5));
      vTmp2.addElement(new Boolean(true));
      values.addElement(vTmp2);

      try{
         //生成电子表格文件
         HSSFWorkbook wb = new HSSFWorkbook();
         //通过先建立表格,后命名可以定义使用的编码,从而保证汉字的正常显示
         HSSFSheet sheet1 = wb.createSheet();
         wb.setSheetName(0,"党组织情况统计表",HSSFWorkbook.ENCODING_UTF_16);
         HSSFSheet sheet2 = wb.createSheet();
         wb.setSheetName(1,"党员情况统计表",HSSFWorkbook.ENCODING_UTF_16);

         // 在表单中新建一个行,并建立4个列,分别写入一些数据
         // 需要注意的是:行的编号以0开始
         HSSFRow row0 = sheet1.createRow((short)0);
         HSSFRow row;

         //先定义一个字体对象
         HSSFFont f = wb.createFont();
         f.setFontName("黑体");
         f.setFontHeightInPoints((short) 10); //字体大小
         f.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //加粗

         // 定义表头单元格格式
         HSSFCellStyle cellStyle = wb.createCellStyle();
         cellStyle.setFont(f);   //单元格字体
         cellStyle.setBorderBottom(cellStyle.BORDER_THIN);   //单元格边框
         cellStyle.setBorderTop(cellStyle.BORDER_THIN);
         cellStyle.setBorderRight(cellStyle.BORDER_THIN);
         cellStyle.setBorderLeft(cellStyle.BORDER_THIN);
         cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //水平对齐方式

         //定义新的调色板以便定义自己的颜色
         HSSFPalette palette = wb.getCustomPalette();
         //替换一个默认调色板中已经定义的颜色
         palette.setColorAtIndex(HSSFColor.BLUE_GREY.index, (byte) 230, (byte) 230, (byte) 255);
         //使用刚定义的颜色为填充色
         cellStyle.setFillForegroundColor(HSSFColor.BLUE_GREY.index);
         cellStyle.setFillPattern((short) HSSFCellStyle.SOLID_FOREGROUND);


         // 写入表头
         HSSFCell c;
         for(int i=0;i{
           c=row0.createCell((short)i);
           c.setCellStyle(cellStyle);
           c.setEncoding( HSSFCell.ENCODING_UTF_16 );
           c.setCellValue(headerNames[i]);
         }
         // 定义单元格格式
         HSSFCellStyle cellStyleContents = wb.createCellStyle();
         cellStyleContents.setBorderBottom(cellStyle.BORDER_THIN);   //表格细边框
         cellStyleContents.setBorderTop(cellStyle.BORDER_THIN);
         cellStyleContents.setBorderRight(cellStyle.BORDER_THIN);
         cellStyleContents.setBorderLeft(cellStyle.BORDER_THIN);

         //定义数据格式
         HSSFDataFormat df = wb.createDataFormat();
         cellStyleContents.setDataFormat(HSSFDataFormat.getBuiltinFormat("text"));
                          //setDataFormat(df.getFormat("#,##0.0"));
                          //setDataFormat(df.getFormat("0.0")
                          //
                         

         // 写入单元格内容
         for(int i=0;i<values.size();i++){
           row=sheet1.createRow((short)i+1);        //建立新的行
           Vector vRecord=(Vector)values.elementAt(i);
           for(int j=0;j{
             c=row.createCell((short)j);            //建立新的列
             c.setCellStyle(cellStyleContents);
             c.setEncoding( HSSFCell.ENCODING_UTF_16 );
             c.setCellValue(vRecord.elementAt(j).toString());
           }
         }


         // 设置页眉
         HSSFHeader header = sheet1.getHeader();
         header.setCenter(toUnicode("党支部建设基本情况汇总"));
         header.setLeft(new String(">>>>>党委组织部".getBytes("GBK"),"8859_1"));
         header.setRight(HSSFHeader.date());
         // 设置页脚
         HSSFFooter footer = sheet1.getFooter();
         footer.setCenter( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() );
   

         FileOutputStream fileOut = new FileOutputStream("d:/workbook.xls");
         wb.write(fileOut);
         fileOut.close();
        
      }catch(Exception ex){System.out.println(ex.toString());}

    }
    private String toUnicode(String s){
      try{
        //byte[] data=new byte[3+s.length()*2];
        //LittleEndian.putShort(data, 0, (short) s.length());

        String unicodeString = new String(s.getBytes("Unicode"),"Unicode");
        //StringUtil.putUncompressedUnicode(unicodeString, data,
        //                                           0x3 + 0);
        return unicodeString;
      }catch(Exception ex){
        System.out.println(ex.toString());
        return "aa";
      }
    }
    /**
     * 测试与MySQL数据库的连接及相关操作
     * 部署MySQL4.1.7,解开jar文件后将类目录拷贝到当前路径中
     */
    public void checkSQL(){
      MDBClass mdb=new MDBClass();
      mdb.connect();
      try {

        sql="drop table if exists test";
        int ret=mdb.getStatement().executeUpdate(sql);

        //建立表格
        sql="create table test("+
            " ID MEDIUMINT,"+
            " name varchar(20),"+
            " sex varchar(2),"+
            " age int,"+
            " telephone MEDIUMTEXT)";
        ret=mdb.executeUpdate(sql);

        // 删除一条记录
        sql="delete from test where ;
        ret=mdb.executeUpdate(sql);

        // 插入一条记录
        sql="insert into test values(5,'张三','M',30,'13156中122699')";
        ret=mdb.executeUpdate(sql);

        // 显示数据库内容
        sql="SELECT * FROM test";
        rs = mdb.executeQuery(sql);
        while(rs.next()){
           long ID");
           String name");
           String sex=rs.getString("sex");
           int age=rs.getInt("age");
           String telephone=rs.getString("telephone");       
           System.out.println(""+id+" "+name+"   "+sex+"   "+
                 age+"    "+telephone);
        }
        rs.close();
        mdb.closeAll();
      } catch (SQLException ex) {
           System.out.println("SQLException: " + ex.getMessage());
           System.out.println("SQLState: " + ex.getSQLState());
           System.out.println("VendorError: " + ex.getErrorCode());
      } finally {
           if(mdb.getConnection()!=null){
             mdb.closeAll();
           }
           if (rs != null) {
             try {
                rs.close();
             } catch (SQLException sqlEx) {}

             rs = null;
           }
  
      }

    }
    public static void main(String[] args) {
        TestHSSF tms=new TestHSSF();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值