POI *** 作Excel如何禁止Excel中的复制和选定?

POI *** 作Excel如何禁止Excel中的复制和选定?,第1张

将excel设置成只读模式即可,具体 *** 作步骤如下

第一步. 打开想取消只读模式的Excel表格。

第二步. 点击左上角图标,点击选项,选择安全性。

第三步 .  在只读选项中,点击“建议只读”。

 第四步.    最后点击“确定”即可。

HSSFWorkbook wb = new HSSFWorkbook()// 建立新HSSFWorkbook对象

HSSFSheet sheet = null

Map<String,List> map = new HashMap<String,List>()

List<?> list = new ArrayList<?>()

//你数据先分别根据籍贯放在不同的集合里,然后再建立多个sheet

//map结构(籍贯名,学生对象集合)

//根据学生籍贯和map的key进行对比,判断是哪个省份,放入相应map的value集合里

//map的 *** 作先get省份,如果get不到就put一个新的省份

//最后嵌套循环输出

for(Map.Entry<String,List> entry : map.entrySet(){

    sheet = wb.createSheet(entry.getKey()) //一个map一个sheet

    Iterator<?> iter =  entry.getValue().iterator()

    while(iter.hasNext()){  // list循环

        

    }

}

我只回答“不想读取隐藏的sheet”的问题,

我也要类似的问题,a.xls 有7个sheet 可我用读取却出了10个 ,

原来的代码是 new 的HSSFWork ,这样会导致将隐藏的sheet 给显示出来

    FileInputStream fis = new FileInputStream(new File("E:/aa.xls"))

            Workbook wb = WorkbookFactory.create(fis)

            int sheetNums = wb.getNumberOfSheets()

            HSSFWorkbook tgWb = new HSSFWorkbook()

只要在原来的workBook 赋值给新的workbook即可,关键代码如下

   HSSFWorkbook tgWb = (HSSFWorkbook) wb

下面给个例子:

例子是复制一个excel a.xls  到b.xls , 复制过程中将首行加粗,有内容的加网格,没有内容的去掉网格

    try {

            FileInputStream fis = new FileInputStream(new File("E:/aa.xls"))

            Workbook wb = WorkbookFactory.create(fis)

            int sheetNums = wb.getNumberOfSheets()

            HSSFWorkbook tgWb = (HSSFWorkbook) wb

            // 首行样式

            CellStyle cellStyle = tgWb.createCellStyle()

            cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN) // 下边框

            cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN)// 左边框

            cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN)// 上边框

            cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN)// 右边框

            Font font = tgWb.createFont()

            font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD)// 加粗

            cellStyle.setFont(font)

            // 其它行样式

            CellStyle cellStyle2 = tgWb.createCellStyle()

            cellStyle2.setBorderBottom(HSSFCellStyle.BORDER_THIN) // 下边框

            cellStyle2.setBorderLeft(HSSFCellStyle.BORDER_THIN)// 左边框

            cellStyle2.setBorderTop(HSSFCellStyle.BORDER_THIN)// 上边框

            cellStyle2.setBorderRight(HSSFCellStyle.BORDER_THIN)// 右边框

            for (int i = 0 i < sheetNums i++) {

                HSSFSheet hssfSheet = tgWb.getSheetAt(i)

                // 去除网格

                hssfSheet.setDisplayGridlines(false)

                // 多少列

                int rowNums = hssfSheet.getLastRowNum()

                for (int j = 0 j <= rowNums j++) {

                    HSSFRow hssfRow = hssfSheet.getRow(j)

                    int cellNums = hssfRow.getLastCellNum()

                    for (int k = 0 k < cellNums k++) {

                        HSSFCell hssfCell = hssfRow.getCell(k)

                        if (hssfCell != null) {

                            if (j == 0) {

                                hssfCell.setCellStyle(cellStyle)

                            } else {

                                hssfCell.setCellStyle(cellStyle2)

                            }

                        }

                    }

                }

            }

            FileOutputStream fileOut = new FileOutputStream("E:/bb.xls")

            tgWb.write(fileOut)

            fileOut.close()

            wb.close()

            tgWb.close()

        } catch (FileNotFoundException e) {

            e.printStackTrace()

        } catch (Exception e) {

            e.printStackTrace()

        }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11465270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存