java poi 操作excel,xssf 读excel 2007,将某些单元格为固定值

本来想看一下java IO,NIO,发现这块知识体系还挺大。暂时写一个操作excel的demo。由于时间关系,完成了功能,后期继续完善。

功能:读取excel表格(该表格为测试结果表格,共十几列,第一行是标题),将第0列标记为id(递增),第9列标记为结果(默认是PASS),第10列标记为姓名。

本可以使用excel的拖拽功能,但由于excel中的内容和样式经常需要修改,因此导致重复工作。暂写这个小demo,期待完善后功能更详尽。


import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
//import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;

/**
 * Created by n on 2015/4/29.
 */
public class InsertInfoToExcel {

    //该方法判断excel版本
    static Workbook openWorkbook(InputStream in, String filename) throws IOException {
        Workbook wb = null;
        if (filename.endsWith(".xlsx")) {
            wb = new XSSFWorkbook(in);//Excel 2007
        } else {
            wb = (Workbook) new HSSFWorkbook(in);//Excel 2003
        }
        return wb;
    }
    //该方法处理excel的数据,把第一列标记为id(递增),第9列标记为结果(默认是PASS),第10列标记为姓名
    public static void setExcelData(String fileName) throws Exception {
        InputStream in = new FileInputStream(fileName);    //创建输入流
        Workbook wb = openWorkbook(in, fileName);// 获取Excel文件对象
        Sheet sheet = wb.getSheetAt(0);// 获取文件的指定工作表m 默认的第一个Row row = null;
        int totalRows = sheet.getLastRowNum();    // 总行数
        int totalCells = sheet.getRow(0).getLastCellNum();//总列数,根据第一行得来的
        System.out.println("列数:" + totalCells + " 行数:" + totalRows);

        //依次获取每一行
        for (int i = 1; i <= sheet.getLastRowNum(); i++) {
            XSSFRow row = (XSSFRow) sheet.getRow(i);// 获取行对象
            if (row == null) {// 如果为空,不处理
                continue;
            }
            //将第0列的标记为id,递增。遇到空的先不管,跳过
            if (row.getCell(0) != null) {
                Cell cellIndex = row.getCell(0);
                System.out.print(cellIndex.getNumericCellValue());
                cellIndex.setCellValue(i);
            } else {
                XSSFCell cellIndex = row.createCell(0);
                cellIndex.setCellValue(i);
            }
            //将第9列标记为测试结果,遇到空的就标记为PASS,非空的不管。
            if (row.getCell(9) == null) {
                XSSFCell cellResult = row.createCell(9);
                System.out.print(cellResult.getStringCellValue());
                cellResult.setCellValue("PASS");
            }
            //将第10列的标记为测试人员的名字。不管是不是空都标记为名字。
            if (row.getCell(10) != null) {
                XSSFCell cellName = row.getCell(10);
//                System.out.print(cellName.getStringCellValue());
                cellName.setCellValue("aashen");
            } else {
                XSSFCell cellName = row.createCell(10);
                cellName.setCellValue("aashen");
            }
        }
        //写入数据,关闭
        OutputStream out = new FileOutputStream(fileName);
        wb.write(out);
        in.close();
        out.close();
    }

    public static void main(String[] args) throws Exception {
//        String fileName="E:"+ File.separator+"hello.txt";
        String fileName = "E://hi.xlsx";
        setExcelData(fileName);
//        File f=new File(fileName);
//        if(f.exists())
//            System.out.println("new file successfully");
//        Writer out =new FileWriter(f);
//        String str="hello";
//        out.write(str);
//        out.close();
    }
}
时间: 2024-10-15 16:07:44

java poi 操作excel,xssf 读excel 2007,将某些单元格为固定值的相关文章

【web开发】☆★之利用POI操作Excel表格系列教程【9】单元格边框处理

[web开发]☆★之利用POI操作Excel表格系列教程[9]单元格边框处理 package csg.xiaoye.poidemo; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.a

【web开发】☆★之利用POI操作Excel表格系列教程【10】单元格填充色和颜色操作

[web开发]☆★之利用POI操作Excel表格系列教程[10]单元格填充色和颜色操作 package csg.xiaoye.poidemo; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import

【web开发】☆★之利用POI操作Excel表格系列教程【11】单元格合并

[web开发]☆★之利用POI操作Excel表格系列教程[11]单元格合并 package csg.xiaoye.poidemo; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.p

Excel应该这么玩——1、命名单元格

Excel应该这么玩--1.命名单元格 命名单元格:通过名称来引用单元格中的值,常用于引用固定不变的值. 下面举个栗子: 1.土掉渣的方法 平时加班工资按时薪的1倍计算,节假日加班工资按2倍计算.给出员工的时薪和各类加班时数,求加班费.一般会输入如下工资: 如果是新手看到这个公式,第一眼肯定不理解其中的1.2.3表示什么含义.怎么把其中的数字换成容易理解的概念呢? 2.创建系数表 如下,先创建一个列表,把各类加班的时薪倍率列举出来.然后选择B3,在左上角显示单元格地址的名称框输入平时加班倍率,下

在Excel里用vba给合并的单元格添加注释

Excel里使用VBA对已经合并的单元格添加注释,直接使用AddComment会报: 运行时错误 '1004':应用程序定义或者对象定义错误 找了很多文章都没找到怎么解决,最后发现在AddComment之前,先ClearComments一下,就好了 Excel using vba to add comment to a merged cell if occur runtime error 1004, before invoking addcomment, first  invoke ClearC

java poi操作excel 添加 锁定单元格保护

Excel的book保护是很常用的,主要是不想让别人修改Excel的时候用.这样能够避免恶意随便修改数据,提高数据的可信度. 下面介绍JAVA POI来实现设置book保护: 使用HSSFSheet类的protectSheet(password)方法就可以了. 具体代码如下: package com.util; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFCell; import org.ap

操作excel(读excel、修改excel)

练习 需求:只要你传入一个表名,就能把所有的数据导入出来,字段名是excel的表头 1.要动态获取到表的字段 cur.description能获取到表的字段 fileds = [ filed[0] for filed in cur.description ] 2.获取数据了  select * from "%s"  % table_name 3.循环写入excel import pymysql,xlwt def export_excel(table_name): host, user,

python学习笔记-day7-2-【python从mysql数据库导数据到excel,读excel,修改excel】

这节说下如何用python把数据库里的数据导出到excel里,并如何读取excel, 修必excel等操作. 一.用python把数据库里的数据导出到excel里 1.导入如下的模块,没有的话需要安装 import pymysql #mysql连接模块import xlwt #写excel的第三方库 从数据库导数据,写到excel文件里 import pymysql,xlwt def export_excel(table_name): import pymysql host, user, pas

POI生成EXCEL文件(字体、样式、单元格合并、计算公式)

创建一个封装类: 1 package com.jason.excel; 2 3 import java.io.FileNotFoundException; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 7 import org.apache.poi.hssf.usermodel.HSSFCell; 8 import org.apache.poi.hssf.usermodel.HSSFCellStyle; 9