给Excel加保护密码

//给Excel加保护密码
public class ExcelTest {
  private static ActiveXComponent xl;
  private static Dispatch workbooks = null;
  private static Dispatch workbook = null;
  private static Dispatch sheet = null;
  private static String filename =null;
  private static boolean readonly = false;
  
  public static void main(String[] args) {
     String file = "C:\\tmp\\jeans.xls";
     OpenExcel(file,false);
     SetValue("A1","Value","2");
     System.out.println(GetValue("A3"));
     CloseExcel(false);
  }
  
  private static void OpenExcel(String file,boolean f) {
    try {
        filename = file;
        xl = new ActiveXComponent("Excel.Application");
        xl.setProperty("Visible", new Variant(f));
        workbooks = xl.getProperty("Workbooks").toDispatch();
        workbook = Dispatch.invoke(workbooks,
                "Open", 
                Dispatch.Method, 
				new Object[]{filename,
				new Variant(false), 
				new Variant(readonly)},
				new int[1] ).toDispatch();
         Dispatch xlo = xl.getObject();
         Dispatch ap = Dispatch.get(xlo, "Application").toDispatch();
         Dispatch as = Dispatch.get(ap, "ActiveSheet").toDispatch();
         Variant asp = Dispatch.call(as, "Protect","password",new Variant(true),new Variant(true),new Variant(true));
         
    }catch(Exception e) {
		e.printStackTrace();
	}
  }
  
  private static void CloseExcel(boolean f) {
   try {   
		 Dispatch.call(workbook,"Save");
         Dispatch.call(workbook, "Close", new Variant(f));
      } catch (Exception e) {
         e.printStackTrace();
     } finally {
		 xl.invoke("Quit", new Variant[] {});
     }
  }
  

  private static void SetValue(String position,String type,String value)  {
     sheet = Dispatch.get(workbook,"ActiveSheet").toDispatch(); 
     Dispatch cell = Dispatch.invoke(sheet, "Range", 
						Dispatch.Get,
						new Object[] {position},
						new int[1]).toDispatch();
      Dispatch.put(cell, type, value);
  }


  private static String GetValue(String position) {
	 Dispatch cell = Dispatch.invoke(sheet,"Range",Dispatch.Get,new Object[] {position},new int[1]).toDispatch();
	 String value = Dispatch.get(cell,"Value").toString();  
	 return value;
  }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值