在开始之前一定要导入poi-3.10.jar; dom4j-1.6.1.jar; xmlbeans-2.6.0.jar包,至于版本可以自己下载最新的版本(直接必应搜索xmlbeans.jar下载,就有相关页面了)

POI的介绍我就不多说了,可以百度,但是不得不得的一点还是相当BUG的,表格有.xls(97到2003年的格式)和.xlsx两种格式,对应POI就有两套操作,对应HSSF和XSSF(真伪有待检验,但是它给我的感觉是这样的)。所以用HSSF写一样接口之后,又用XSSF写一篇一摸一样的接口,但是差别不大,粘贴复制的工作。

我发现举例子太难了,太难了,所以直接上代码,Talk is cheap, show me your code.(操作的表格是以下的样式)

XSSF接口

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;/*** 对xlsx表格进行操作 * 1.XSSFXLSX(String filePath) // 构造函数 传入文件绝对地址,构建一个对象,用来控制一个表格文件* 2.reReadXLSX() // 这个函数也是读取表格内容,用于打开表格之后,再重读表格内容的* 3.writeXLSX(Elempty data) // 写数据:传入此次点名的数据,那些学生被点名了,那些没有 * 4.getRowNum(String filePath) // 获取表格的行数 * 5.getColNum() // 获取列数 * 6.getAllValue() // 获取整个表格的内容* 7.getStuInformation() // 获取学生信息的基本信息* 8.getCellValue(XSSFCell cell) // 判断单元的数据类型,将转化为字符串类型,并返回数据* @author ydduong*/
public class XSSFXLSX {private static XSSFWorkbook workbook; //Excel表格private static XSSFSheet sheet; //表private static int rows, cols; //行数和列数private static String[][] value; //整张表的内容private static String initFilePath;private static boolean isFirstWrite = true;private static String[] stuLeaveNum, stuNotArrivedNum;/*** 1.XSSFXLSX(String filePath) // 构造函数 传入文件绝对地址,构建一个对象,用来控制一个表格文件** @param filePath 传进的是文件的绝对路径(也可以是相对路径)* @throws IOException*/public XSSFXLSX(String filePath) throws IOException {super();initFilePath = filePath; // 保存文件路径FileInputStream inputStream = new FileInputStream(new File(initFilePath)); // 创建一个输入流读取单元格workbook = new XSSFWorkbook(inputStream);sheet = workbook.getSheetAt(0); // 规定一个文件了只有一个工作表rows = sheet.getLastRowNum() + 1; // 获取行数XSSFRow rowFirst = sheet.getRow(0); // 获取第一行cols = rowFirst.getPhysicalNumberOfCells(); // 获取列数stuLeaveNum = new String[rows];stuNotArrivedNum = new String[rows];String[][] temp = new String[rows][cols];for (int i = 0; i < rows; i++) { // 从行开始读XSSFRow row = sheet.getRow(i);for (int j = 0; j < cols; j++) {temp[i][j] = getCellValue(row.getCell(j)); //  获取单元格数据,这里用二维数组来保存表格的数据}stuLeaveNum[i] = getCellValue(row.getCell(cols - 3));stuNotArrivedNum[i] = getCellValue(row.getCell(cols - 2));}value = temp;}/*** 2.reReadXLSX() // 这个函数也是读取表格内容,用于打开表格之后,再重读表格内容的*/public static void reReadXLSX() throws FileNotFoundException, IOException {FileInputStream inputStream = new FileInputStream(new File(initFilePath));//创建一个输入流读取单元格workbook = new XSSFWorkbook(inputStream);sheet = workbook.getSheetAt(0); //规定一个文件了只有一个工作表rows = sheet.getLastRowNum() + 1; //获取行数XSSFRow rowFirst = sheet.getRow(0); //获取第一行cols = rowFirst.getPhysicalNumberOfCells(); //获取列数String[][] temp = new String[rows][cols];for (int i = 0; i < rows; i++) { //从第二行开始XSSFRow row = sheet.getRow(i);for (int j = 0; j < cols; j++) {temp[i][j] = getCellValue(row.getCell(j));}}value = temp;}/*** 3.writeXLSX(Elempty data) // 写数据:传入此次点名的数据,那些学生被点名了,那些没有*/public static void writeXLSX(int[] luckyDog) throws IOException {XSSFWorkbook newWorkbook = new XSSFWorkbook(); // 创建工作薄XSSFCellStyle cellStyle = newWorkbook.createCellStyle();cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 单元格居中cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); // 下边框  cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN); // 左边框  cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN); // 上边框  cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN); // 右边框XSSFSheet newSheet = newWorkbook.createSheet("sheet"); // 创建工作表if (isFirstWrite) { // isFirstWrite初始值为true// 第一次写数据,需要添加新的列,之后的只需要修改数据isFirstWrite = false;for (int i = 0; i < rows; i++) {XSSFRow row = newSheet.createRow(i); // 创建第i行for (int j = 0; j <= cols; j++) {newSheet.setColumnWidth(j, 4500); // 设置第j列的列宽,普遍设置为4500if (j == 2) { // 单独设置第二列宽2600newSheet.setColumnWidth(j, 2600);}XSSFCell cell = row.createCell(j); // 创建第i行第j列单元格if (j < cols - 3) { // 0 到 cols - 3列 重写以前的数据cell.setCellValue(value[i][j]);}if (j == cols - 3) { // 添加的新列if (i == 0) {  // 第一行Calendar calendar = Calendar.getInstance();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");String data = dateFormat.format(calendar.getTime());cell.setCellValue(data); // 第一行设置为当天的日期} else {switch (luckyDog[i]) {case 0: // 没有点到cell.setCellValue("");break;case 1: //cell.setCellValue("已到");break;case 2: //cell.setCellValue("请假");break;case 3: //cell.setCellValue("缺勤");break;}}}if (j == cols - 2) { // 请假次数统计newSheet.setColumnWidth(j, 2600);if (i == 0) {cell.setCellValue(stuLeaveNum[i]);} else {if (luckyDog[i] == 2) { // 如果有请假,缺勤次数 + 1String temp = stuLeaveNum[i]; // 获取以前的缺勤的次数if (temp.equals("")) {temp = "0";}temp = String.valueOf(Integer.valueOf(temp).intValue() + 1); // 缺勤次数 + 1cell.setCellValue(temp); // 回写} else { // 如果没有请假,还写以前的数据cell.setCellValue(stuLeaveNum[i]);}}}if (j == cols - 1) { //缺勤次数统计newSheet.setColumnWidth(j, 2600);if (i == 0) {cell.setCellValue(stuNotArrivedNum[i]);} else {if (luckyDog[i] == 3) {String temp = stuNotArrivedNum[i];if (temp.equals("")) {temp = "0";}temp = String.valueOf(Integer.valueOf(temp).intValue() + 1);cell.setCellValue(temp);} else {cell.setCellValue(stuNotArrivedNum[i]);}}}if (j == cols) { //统计总评newSheet.setColumnWidth(j, 2600);if (i == 0) {cell.setCellValue(value[i][cols - 1]);} else {String temp = stuNotArrivedNum[i]; //缺勤次数if (temp.equals("")) {temp = "0";}int sum = Integer.valueOf(temp).intValue();if (luckyDog[i] == 3) {sum++;}int total = 100 - sum * 5;if (total == 0) {temp = "0";} else {temp = String.valueOf(total);}cell.setCellValue(temp);}}cell.setCellStyle(cellStyle);}}} else { // 如果不是第一次写数据就需要添加一个新的列,否则就像下面代码一样,直接更新列for (int i = 0; i < rows; i++) {XSSFRow row = newSheet.createRow(i);for (int j = 0; j < cols; j++) {newSheet.setColumnWidth(j, 4500);if (j == 2) {newSheet.setColumnWidth(j, 2600);}XSSFCell cell = row.createCell(j);if (j < cols - 4) {cell.setCellValue(value[i][j]);}if (j == cols - 4) { //不添加的新列,将最后一列的考勤情况重写if (i == 0) {  //第一行Calendar calendar = Calendar.getInstance();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");String data = dateFormat.format(calendar.getTime());cell.setCellValue(data);} else {switch (luckyDog[i]) {case 0: //没有点到cell.setCellValue("");break;case 1: //cell.setCellValue("已到");break;case 2: //cell.setCellValue("请假");break;case 3: //cell.setCellValue("缺勤");break;}}}if (j == cols - 3) { //重新统计请假次数newSheet.setColumnWidth(j, 2600);if (i == 0) {cell.setCellValue(stuLeaveNum[i]);} else {if (luckyDog[i] == 2) {String temp = stuLeaveNum[i];if (temp.equals("")) {temp = "0";}temp = String.valueOf(Integer.valueOf(temp).intValue() + 1);cell.setCellValue(temp);} else {cell.setCellValue(stuLeaveNum[i]);}}}if (j == cols - 2) { //重新统计缺勤次数newSheet.setColumnWidth(j, 2600);if (i == 0) {cell.setCellValue(stuNotArrivedNum[i]);} else {if (luckyDog[i] == 3) {String temp = stuNotArrivedNum[i];if (temp.equals("")) {temp = "0";}temp = String.valueOf(Integer.valueOf(temp).intValue() + 1);cell.setCellValue(temp);} else {cell.setCellValue(stuNotArrivedNum[i]);}}}if (j == cols - 1) { //统计总评newSheet.setColumnWidth(j, 2600);if (i == 0) {cell.setCellValue(value[i][cols - 1]);} else {String temp = stuNotArrivedNum[i]; //缺勤次数if (temp.equals("")) {temp = "0";}int sum = Integer.valueOf(temp).intValue();if (luckyDog[i] == 3) {sum++;}int total = 100 - sum * 5;if (total == 0) {temp = "0";} else {temp = String.valueOf(total);}cell.setCellValue(temp);}}cell.setCellStyle(cellStyle);}}}File xlsFile = new File(initFilePath); // 读取文件对象FileOutputStream xlsStream = new FileOutputStream(xlsFile);newWorkbook.write(xlsStream); // 写数据System.out.println("ok");reReadXLSX(); //写完之后,再重读表格内容的,更新类的一些变量的值,比如列数,缺勤次数之类的}/*** 4.getRowNum() // 获取表格的行数*/public static int getRowNum() { // 获取表格的列数,用来简单判断表格是否为标准格式return rows; //获取工作表的行数}/*** 5.getColNum() // 获取列数*/public int getColNum() { // 获取表格的列数,用来简单判断表格是否为标准格式return cols; //获取工作表的行数}/*** 6.getAllValue() // 获取整个表格的内容*/public String[][] getAllValue() {return value;}/*** 7.getStuInformation() // 获取学生信息的基本信息*/public static String[][] getStuInformation() {String[][] stuInformation = new String[rows - 1][6];for (int i = 1; i < rows; i++) { //从第二行开始XSSFRow row = sheet.getRow(i);for (int j = 0; j < 3; j++) {stuInformation[i - 1][j] = getCellValue(row.getCell(j));}stuInformation[i - 1][3] = getCellValue(row.getCell(cols - 3));stuInformation[i - 1][4] = getCellValue(row.getCell(cols - 2));stuInformation[i - 1][5] = getCellValue(row.getCell(cols - 1));}return stuInformation;}/*** 8.getCellValue(XSSFCell cell) // 判断单元的数据类型,将转化为字符串类型,并返回数据* 这个很重要,防止POI报指针异常错误*/public static String getCellValue(XSSFCell cell) {String str = "";if (cell == null) {return str; // 如果指针为空,返回空字符串}switch (cell.getCellType()) {  // 简单的查检列类型 case XSSFCell.CELL_TYPE_STRING: // 字符串  str = cell.getRichStringCellValue().toString();break;case XSSFCell.CELL_TYPE_NUMERIC: // 数字  long dd = (long) cell.getNumericCellValue();str = dd + "";break;case XSSFCell.CELL_TYPE_BLANK:str = "";break;case XSSFCell.CELL_TYPE_FORMULA:str = String.valueOf(cell.getCellFormula());break;case XSSFCell.CELL_TYPE_BOOLEAN: // boolean型值  str = String.valueOf(cell.getBooleanCellValue());break;case XSSFCell.CELL_TYPE_ERROR:str = String.valueOf(cell.getErrorCellValue());break;default:break;}return str;}
}

HSSF接口


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;/*** 对xls表格进行操作(和xlsx类的操作方法一样)* 1.HSSFXLS(String filePath) // 构造函数 传入文件绝对地址,构建一个对象,用来控制一个表格文件* 2.reReadXLS() // 这个函数也是读取表格内容,用于打开表格之后,再重读表格内容的* 3.writeXLS(Elempty data) // 写数据:传入此次点名的数据,那些学生被点名了,那些没有 * 4.getRowNum(String filePath) // 获取表格的行数 * 5.getColNum() // 获取列数 * 6.getAllValue() // 获取整个表格的内容* 7.getStuInformation() // 获取学生信息的基本信息* 8.getCellValue(XSSFCell cell) // 判断单元的数据类型,将转化为字符串类型,并返回数据* @author ydduong*/
public class HSSFXLS {private static HSSFWorkbook workbook;private static HSSFSheet sheet;private static int rows, cols;private static String[][] value;private static String initFilePath;private static boolean isFirstWrite = true;private static String[] stuLeaveNum, stuNotArrivedNum;/*** 1.HSSFXLS(String filePath) // 构造函数 传入文件绝对地址,构建一个对象,用来控制一个表格文件** @param filePath* @throws IOException*/public HSSFXLS(String filePath) throws IOException {super();initFilePath = filePath;InputStream inputStream = new FileInputStream(filePath);// 创建一个输入流读取单元格POIFSFileSystem fileSystem = new POIFSFileSystem(inputStream);// 包装类,将读取的内容放入内存中workbook = new HSSFWorkbook(fileSystem);sheet = workbook.getSheetAt(0); // 规定一个文件了只有一个工作表rows = sheet.getLastRowNum() + 1; // 获取行数HSSFRow rowFirst = sheet.getRow(0); // 获取第一行cols = rowFirst.getPhysicalNumberOfCells(); // 获取列数stuLeaveNum = new String[rows]; // 用来记录打开表格时的  一些数据;主要用来写数据stuNotArrivedNum = new String[rows];String[][] temp = new String[rows][cols];for (int i = 0; i < rows; i++) {HSSFRow row = sheet.getRow(i);for (int j = 0; j < cols; j++) {temp[i][j] = getCellValue(row.getCell(j));}stuLeaveNum[i] = getCellValue(row.getCell(cols - 3));stuNotArrivedNum[i] = getCellValue(row.getCell(cols - 2));}value = temp;}/*** 2.reReadXLS() // 这个函数也是读取表格内容,用于打开表格之后,再重读表格内容的*/public static void reReadXLS() throws FileNotFoundException, IOException {FileInputStream inputStream = new FileInputStream(new File(initFilePath));//创建一个输入流读取单元格workbook = new HSSFWorkbook(inputStream);sheet = workbook.getSheetAt(0); //规定一个文件了只有一个工作表rows = sheet.getLastRowNum() + 1; //获取行数HSSFRow rowFirst = sheet.getRow(0); //获取第一行cols = rowFirst.getPhysicalNumberOfCells(); //获取列数String[][] temp = new String[rows][cols];for (int i = 0; i < rows; i++) { //从第二行开始HSSFRow row = sheet.getRow(i);for (int j = 0; j < cols; j++) {temp[i][j] = getCellValue(row.getCell(j));}}value = temp;}/*** 3.writeXLS(Elempty data) // 写数据:传入此次点名的数据,那些学生被点名了,那些没有*/public static void writeXLS(int[] luckyDog) throws IOException {HSSFWorkbook newWorkbook = new HSSFWorkbook(); // 创建工作薄HSSFCellStyle cellStyle = newWorkbook.createCellStyle();cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //单元格居中cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框  cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框  cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框  cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框HSSFSheet newSheet = newWorkbook.createSheet("sheet"); // 创建工作表if (isFirstWrite) {//第一次写数据,需要添加新的列,之后的只需要修改数据isFirstWrite = false;for (int i = 0; i < rows; i++) {HSSFRow row = newSheet.createRow(i);for (int j = 0; j <= cols; j++) {newSheet.setColumnWidth(j, 4500);if (j == 2) {newSheet.setColumnWidth(j, 2600);}HSSFCell cell = row.createCell(j);if (j < cols - 3) {cell.setCellValue(value[i][j]);}if (j == cols - 3) { //添加的新列if (i == 0) {  //第一行Calendar calendar = Calendar.getInstance();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");String data = dateFormat.format(calendar.getTime());cell.setCellValue(data);} else {switch (luckyDog[i]) {case 0: //没有点到cell.setCellValue("");break;case 1: //cell.setCellValue("已到");break;case 2: //cell.setCellValue("请假");break;case 3: //cell.setCellValue("缺勤");break;}}}if (j == cols - 2) { //请假次数统计newSheet.setColumnWidth(j, 2600);if (i == 0) {cell.setCellValue(stuLeaveNum[i]);} else {if (luckyDog[i] == 2) {String temp = stuLeaveNum[i];if (temp.equals("")) {temp = "0";}temp = String.valueOf(Integer.valueOf(temp).intValue() + 1);cell.setCellValue(temp);} else {cell.setCellValue(stuLeaveNum[i]);}}}if (j == cols - 1) { //缺勤次数统计newSheet.setColumnWidth(j, 2600);if (i == 0) {cell.setCellValue(stuNotArrivedNum[i]);} else {if (luckyDog[i] == 3) {String temp = stuNotArrivedNum[i];if (temp.equals("")) {temp = "0";}temp = String.valueOf(Integer.valueOf(temp).intValue() + 1);cell.setCellValue(temp);} else {cell.setCellValue(stuNotArrivedNum[i]);}}}if (j == cols) { //统计总评newSheet.setColumnWidth(j, 2600);if (i == 0) {cell.setCellValue(value[i][cols - 1]);} else {String temp = stuNotArrivedNum[i]; //缺勤次数if (temp.equals("")) {temp = "0";}int sum = Integer.valueOf(temp).intValue();if (luckyDog[i] == 3) {sum++;}int total = 100 - sum * 5;if (total == 0) {temp = "0";} else {temp = String.valueOf(total);}cell.setCellValue(temp);}}cell.setCellStyle(cellStyle);}}} else {for (int i = 0; i < rows; i++) {HSSFRow row = newSheet.createRow(i);for (int j = 0; j < cols; j++) {newSheet.setColumnWidth(j, 4500);if (j == 2) {newSheet.setColumnWidth(j, 2600);}HSSFCell cell = row.createCell(j);if (j < cols - 4) {cell.setCellValue(value[i][j]);}if (j == cols - 4) { //不添加的新列,将最后一列的考勤情况重写if (i == 0) {  //第一行Calendar calendar = Calendar.getInstance();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");String data = dateFormat.format(calendar.getTime());cell.setCellValue(data);} else {switch (luckyDog[i]) {case 0: //没有点到cell.setCellValue("");break;case 1: //cell.setCellValue("已到");break;case 2: //cell.setCellValue("请假");break;case 3: //cell.setCellValue("缺勤");break;}}}if (j == cols - 3) { //重新统计请假次数newSheet.setColumnWidth(j, 2600);if (i == 0) {cell.setCellValue(stuLeaveNum[i]);} else {if (luckyDog[i] == 2) {String temp = stuLeaveNum[i];if (temp.equals("")) {temp = "0";}temp = String.valueOf(Integer.valueOf(temp).intValue() + 1);cell.setCellValue(temp);} else {cell.setCellValue(stuLeaveNum[i]);}}}if (j == cols - 2) { //重新统计缺勤次数newSheet.setColumnWidth(j, 2600);if (i == 0) {cell.setCellValue(stuNotArrivedNum[i]);} else {if (luckyDog[i] == 3) {String temp = stuNotArrivedNum[i];if (temp.equals("")) {temp = "0";}temp = String.valueOf(Integer.valueOf(temp).intValue() + 1);cell.setCellValue(temp);} else {cell.setCellValue(stuNotArrivedNum[i]);}}}if (j == cols - 1) { //统计总评newSheet.setColumnWidth(j, 2600);if (i == 0) {cell.setCellValue(value[i][cols - 1]);} else {String temp = stuNotArrivedNum[i]; //缺勤次数if (temp.equals("")) {temp = "0";}int sum = Integer.valueOf(temp).intValue();if (luckyDog[i] == 3) {sum++;}int total = 100 - sum * 5;if (total == 0) {temp = "0";} else {temp = String.valueOf(total);}cell.setCellValue(temp);}}cell.setCellStyle(cellStyle);}}}File xlsFile = new File(initFilePath);FileOutputStream xlsStream = new FileOutputStream(xlsFile);newWorkbook.write(xlsStream);System.out.println("okok");reReadXLS();}/*** 4.getRowNum(String filePath) // 获取表格的行数*/public static int getRowNum() { //获取表格的列数,用来简单判断表格是否为标准格式return rows; //获取工作表的行数}/*** 5.getColNum()//获取列数*/public int getColNum() { // 获取表格的列数,用来简单判断表格是否为标准格式return cols; // 获取工作表的行数}/*** 6.getAllValue() // 获取整个表格的内容** @return*/public String[][] getAllValue() {return value;}/*** 7.getStuInformation() // 获取学生信息的基本信息*/public static String[][] getStuInformation() {String[][] stuInformation = new String[rows - 1][6];for (int i = 1; i < rows; i++) { // 从第二行开始HSSFRow row = sheet.getRow(i);for (int j = 0; j < 3; j++) {stuInformation[i - 1][j] = getCellValue(row.getCell(j));}stuInformation[i - 1][3] = getCellValue(row.getCell(cols - 3));stuInformation[i - 1][4] = getCellValue(row.getCell(cols - 2));stuInformation[i - 1][5] = getCellValue(row.getCell(cols - 1));}return stuInformation;}/*** 8.getCellValue(XSSFCell cell) // 判断单元的数据类型,将转化为字符串类型,并返回数据** @param cell* @return*/public static String getCellValue(HSSFCell cell) {String key = "";if (cell == null) {return key; // 如果指针为空,返回空字符串}switch (cell.getCellType()) {  // 简单的查检列类型 case HSSFCell.CELL_TYPE_STRING: // 字符串  key = cell.getRichStringCellValue().toString();break;case HSSFCell.CELL_TYPE_NUMERIC: // 数字  long dd = (long) cell.getNumericCellValue();key = dd + "";break;case HSSFCell.CELL_TYPE_BLANK:key = "";break;case HSSFCell.CELL_TYPE_FORMULA:key = String.valueOf(cell.getCellFormula());break;case HSSFCell.CELL_TYPE_BOOLEAN: // boolean型值  key = String.valueOf(cell.getBooleanCellValue());break;case HSSFCell.CELL_TYPE_ERROR:key = String.valueOf(cell.getErrorCellValue());break;default:break;}return key;}}

Java操作Excel表格 POI相关推荐

  1. Java 操作excel表格 - JXL(Java excel api)

    Java 操作excel表格 Java 操作 Excel 最常用的就是JXL(Java excel api)和POI,用起来挺简单的,不过相应的其功能也并非很强大,够用就行! 首先,下载jxl.jar ...

  2. Java操作Excel之POI:java读写excel文件以及打印设置

    Java操作Excel之POI:java读写excel文件以及打印设置 POI的jar包下载地址:http://poi.apache.org/download.html 注意:项目中导入poi 4.0 ...

  3. java操作excel表格详解

    在日常工作中,对Excel工作表格的操作处理可是多的数不清楚,下面是java语言对其的操作,有需要的小伙伴可以参考下 使用场景 1.将用户信息导出为excel表格(导出数据-) 2.将Excel表中的 ...

  4. Java操作Excel:POI和EasyExcel

    文章与博客园同步,欢迎访问:https://www.cnblogs.com/MessiXiaoMo3334/p/13288568.html 代码地址:https://gitee.com/ilovemo ...

  5. java操作office表格(POI与easyExcelg)

    文章目录 1.POI与easyExcelg概述 2.POI-Excel写入 3.POI-Excel读取 4.EasyExcel操作 1.POI与easyExcelg概述 概述 开发中经常会设计到exc ...

  6. JAVA操作Excel表格

    一.JExcelApi 可以从文件或者输入流进行读取操作. 基本步骤: 1.由文件或者输入流创建一个workbook; 2.由workbook的getSheet()方法创建一个工作表Sheet(两种方 ...

  7. Java操作excel之poi

    POI 操作excel 导包 <!-- 07版本excel --><dependency><groupId>org.apache.poi</groupId&g ...

  8. Java操作Excel表格入门实例

    算法学累了 换个知识学一下 这次算是复习 首先 操作表格需要用到第三方的库 Java本身没有 需要引入类库 如果你会使用Maven 那么直接导入刷新就行 <dependency><g ...

  9. java操作Excel的poi 遍历一个工作簿

    遍历一个工作簿 package com.java.poi;import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hs ...

最新文章

  1. oracle 11g ORA-12514
  2. 解决Unity协程无法同步返回的问题
  3. [斯坦福创业课]Jeff谈LinkedIn的同理心管理
  4. 信息系统项目管理师考试答题卡样式【下载PDF】
  5. 如何使用一个库中不存在的函数
  6. CSS 基础框盒模型介绍
  7. 使用SpringMVC模拟文件上传与下载案例
  8. I/O----复制文本文件
  9. Ubuntu在docker容器中安装TensorFlow-1.5
  10. MySQL VARCHAR的说明信息
  11. link服务器间网络通讯错误_LINK-服务器间网络通讯错误
  12. python模拟微信登录公众号_PYTHON 微信公众平台模拟登陆
  13. iOS TestFlight Beta版本测试
  14. com组件 的劫持_IE首页被劫持跳转问题的解决方案
  15. 华为MH5000模块知识应用简介
  16. HDMI转MIPI CSI东芝转换芯片-TC358743XBG/TC358749XBG
  17. 开发者笑疯了! LLaMa惊天泄露引爆ChatGPT平替狂潮,开源LLM领域变天
  18. linux下删除隐藏文件夹及子文件夹
  19. elasticsearch从入门到入门系列(一)---简单介绍及安装
  20. 【KNIME经验】兼容读取多种日期格式数据

热门文章

  1. 【 js中通过键盘上下左右移动图片】
  2. How to reprint others' articles
  3. 维基链WICC召集令
  4. C语言位运算之有符号数和无符号数
  5. 动易swCMS6.5网站的缓存技术分析
  6. DALI网络与真实数字照明的工程共存---凯利讯半导体
  7. 某省财政厅12x4T私有云存储恢复
  8. 自上而下的显著性检测有哪些_2020东莞埋地供水管漏水检测哪里有快捷方便
  9. java导出并下载word_java 导出word 并下载
  10. Java变更行单元测试覆盖率