本文共 2693 字,大约阅读时间需要 8 分钟。
java使用poi实现excel保护工作表,支持.xls和.xlsx类型的excel,代码如下:
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream;import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** * <p>类描述:保护工作表 </p> * <p>创建人:wanghonggang </p> * <p>创建时间:2019年8月13日 下午3:14:40 </p> * 所需引用jar包:poi和poi-ooxml */ public class PoiUtil {//测试
public static void main(String[] args) { try { lockExcel("E:\\test\\test.xlsx",0,"123"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * * <p>方法描述:保护表格 TODO</p> * <p>创建人: wanghonggang </p> * <p>创建时间: 2019年8月13日 下午4:12:03 </p> * <p>修改记录:</p> * @param excelPath excel文件路径 * @param sheetIndex excel表序号,从0开始 * @param password 加密密码 * @throws Exception * void */ public static void lockExcel(String excelPath,int sheetIndex,String password) { //判断文件路径是否正确 if(null != excelPath && !excelPath.isEmpty()){ InputStream xlsFile=null; XSSFWorkbook xwb=null; HSSFWorkbook hwb=null; FileOutputStream os=null; try{ //文件流 xlsFile = new FileInputStream(excelPath); //判断是否为xlsx文件 boolean is_Xlsx=isXlsx(excelPath); //xlsx文件使用XSSF前缀处理类,否则使用HSSF前缀处理类 if(is_Xlsx){ //读取工作簿 xwb = new XSSFWorkbook(xlsFile); //获取sheet数量 //wb.getNumberOfSheets(); //读取工作表 XSSFSheet sheet = xwb.getSheetAt(sheetIndex); //sheet添加保护代码 sheet.protectSheet(password); //输出结果excel os = new FileOutputStream(excelPath); xwb.write(os); }else{ //读取工作簿 hwb = new HSSFWorkbook(xlsFile); //获取sheet数量 //wb.getNumberOfSheets(); //读取工作表 HSSFSheet sheet = hwb.getSheetAt(sheetIndex); //sheet添加保护代码 sheet.protectSheet(password); //输出结果excel os = new FileOutputStream(excelPath); hwb.write(os); } }catch(FileNotFoundException e1){ }catch(IOException e2){ }finally{ //关闭 try { if(null != os) os.close(); if(null != xwb) xwb.close(); if(null != hwb) hwb.close(); if(null != xlsFile) xlsFile.close(); } catch (IOException e) { e.printStackTrace(); } } }else{ System.out.println("文件路径不正确!"); } } /** * * <p>方法描述:判断是否为.xlsx后缀文件 TODO</p> * <p>创建人: wanghonggang </p> * <p>创建时间: 2019年8月13日 下午3:38:35 </p> * <p>修改记录:</p> * boolean * true 是xlsx * false 不是xlsx */ public static boolean isXlsx(String excelPath){ return ( null != excelPath && !excelPath.isEmpty() && excelPath.toLowerCase().endsWith(".xlsx"))?true:false; } }
maven所需依赖如下:
<dependency>
<groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.0</version> </dependency><dependency>
<groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.0</version> </dependency>
转载地址:http://fhivi.baihongyu.com/