将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()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)