//给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;
}
}