jxl生成带保护的excel和读取带保护的excel

jxl在生成excel的时候,可以提供带保护的excel,防止用户篡改。看例子:

/**

* 创建excel文件

* @param file

*/

public static void getExcelModel(File file){

try {

String[] title = {"史籍语料","ID","唯一标示符号","标题级别","新增条目名","主题词","分类"};

 // 创建Excel工作薄   

        WritableWorkbook wwb=Workbook.createWorkbook(file); 

        //定义excel标题单元格的样式

        WritableFont wf = new WritableFont(WritableFont.ARIAL, 15,WritableFont.BOLD); // 定义格式 字体 下划线 斜体 粗体 颜色

        WritableCellFormat wcf = new WritableCellFormat(wf); // 单元格定义

        wcf.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式

         

        //定义卷次标题的样式

        WritableFont wfJuanci=new WritableFont(WritableFont.ARIAL, 13, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, ColourUtil.getNearestColour("#7030A0"));

        WritableCellFormat wcfJuanci=new WritableCellFormat(wfJuanci);

        

        //定义卷标题的样式

        WritableFont wfJuan=new WritableFont(WritableFont.createFont("宋体"), 12, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, ColourUtil.getNearestColour("#008000"));

        WritableCellFormat wcfJuan=new WritableCellFormat(wfJuan);

       

        //定义篇标题的样式

        WritableFont wfPian=new WritableFont(WritableFont.createFont("宋体"), 11, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, ColourUtil.getNearestColour("#92D050"));

        WritableCellFormat wcfPian=new WritableCellFormat(wfPian);

        

        //定义章标题的样式

        WritableFont wfZhang=new WritableFont(WritableFont.createFont("宋体"), 10, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, ColourUtil.getNearestColour("#0000FF"));

        WritableCellFormat wcfZhang=new WritableCellFormat(wfZhang);

        

        //定义节标题的样式

        WritableFont wfJie=new WritableFont(WritableFont.createFont("宋体"), 9, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, ColourUtil.getNearestColour("#66FFFF"));

        WritableCellFormat wcfJie=new WritableCellFormat(wfJie);

        

        WritableSheet sheet = wwb.createSheet("内容结构", 0);//设置excel的第一个工作簿的名字   

        Label label;   

        for(int i=0;i<title.length;i++){   

            // Label(x,y,z) 代表单元格的第x+1列,第y+1行, 内容z   

            // 在Label对象的子对象中指明单元格的位置和内容   

            label = new Label(i,0,title[i],wcf); 

            

            // 将定义好的单元格添加到工作表中   

            sheet.addCell(label);

            

            sheet.setColumnView(i, 20); // 设置列的宽度

            

        } 

        

                 sheet.getSettings();//得到excel工作簿的设置对象

        sheet.getSettings().setProtected(true);//设置excel文件的保护

        sheet.getSettings().setPassword("123456");//设置excel文件的保护密码

        

    // 写入数据   

    wwb.write();   

    // 关闭文件   

    wwb.close();

} catch (Exception e) {

// TODO: handle exception

System.out.println("导出excel文件出错");

JOptionPane.showMessageDialog(null,"导出excel文件出错");

e.printStackTrace();

}

}

 

这样创建的excel只能看,不能改。如果要改只能取消保护,并且输入正确的密码。

 

受保护excel的读取,excel保护机制只是在excel软件做了限制,并没有深层的进行限制。所以还是可以通过程序更改的,不需要密码。看例子:

private static void updateExcel(File file){

try {

Workbook book  =  Workbook.getWorkbook(file);//读取一个excel文件对象,便于以后读取

            WritableWorkbook wwb = Workbook.createWorkbook(file, book);//得到正在读取文件的创建对象,便于以后修改

 

            // 读取第一张工作表

            WritableSheet sheet = wwb.getSheet(0) ;

            

       for(int i=0;i<sheet.getRows();i++){

  System.out.println(sheet.getCell(0, i).getContents());

       }

       Label label=new Label(0, 0, "啊啊啊");//修改其第一个单元格的内容,通过单元格覆盖的方法进行修改

       sheet.addCell(label);//加入单元格,相当于覆盖

       

       book.close();

            wwb.write() ;

            wwb.close() ;

            System.out.println("更新完成!") ;

 

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

 

主方法:

public static void main(String[] args) {

//getExcelModel(new File("C:\\Users\\Administrator\\Desktop\\lock.xls"));

updateExcel(new File("C:\\Users\\Administrator\\Desktop\\lock2.xls"));

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值