返回目录:excel表格制作
java我导入两个操作excel表的pom文件之后出现包中没有CellType?
出现这种问题可能多种原因,下面是举例说明
POI版本为3.8;
jar包导入之后XSSFWorkbook可以正常使用了,但出现了The import org.apache.poi.ss.usermodel.CellType cannot be resolved
代码中
cellRowName.setCellType(CellType.STRING); // 设置单元格值的类型
style.setAlignment(HorizontalAlignment.CENTER); // 设置水平对齐的样式为居中对齐;
报错,原来是代码所用POI版本低的缘故;
高版本的import org.apache.poi.ss.usermodel.CellType变为了import org.apache.poi.ss.usermodel.Cell;
同时cellRowName.setCellType(CellType.STRING);变为了cellRowName.setCellType(Cell.CELL_TYPE_STRING);
Java如何操纵EXCEL?
这里介绍一种简单的方式—poi,是Apache下的一个函数库,提供了一系列的api来供java程序员操作Microsoft Office文档,只要引入这个jar包,就可以快速完成对Excel文件的读取和写入,下面我简单介绍一下这个jar包的使用,以及它如何操纵Excel文件,实验环境win10+jdk1.8+eclipse,主要内容如下:
1.下载poi,这个直接到官网上下载就行,目前最新版本是4.0.1,直接点击下载,如下:
下载完成后,我们解压这个文件,文件内容如下,这里我们只需要poi-4.0.1.jar这个jar包就行:
2.在项目中引入这个jar包,接着我们就可以编写相关代码进行测试了,主要代码及截图如下:
写入Excel文件,主要代码如下,很简单,一个一个单元格写入数据就行:
点击运行程序,就会在当前目录下生成一个write.xls文件,内容如下,已经成功写入数据:
读取Excel文件,主要代码如下,一行一行遍历读取内容就行:
点击运行程序,读取的数据如下,已经成功获取到Excel数据:
至此,我们就完成了利用Java来操纵Excel文件。总的来说,整个过程不难,借助poi,我们可以快速完成对Excel文件的读写,只要你有一定的Java基础,熟悉一下相关代码和示例,多练习几遍,很快就能掌握的,当然,你也可以使用其他方法来操作excel,像jxl等,也都可以,网上也有相关教程和资料,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言。
有什么软件可以随意提取Excel表格中的数据?
推荐你使用Java进行开发,通过Apache POI开源项目实现对Excel表格的数据读取:
下载POI4.1.0:
https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-4.1.0-20190412.zip
并将jar包导入项目工程。实现代码:
public class ExcelOperate {
public static void main(String[] args) throws Exception {
File file = new File("ExcelDemo.xls");
String[][] result = getData(file, 1);
int rowLength = result.length;
for(int i=0;i for(int j=0;j System.out.print(result[i][j]+"\t\t"); } System.out.println(); } } /** * 读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行 * @param file 读取数据的源Excel * @param ignoreRows 读取数据忽略的行数,比喻行头不需要读入 忽略的行数为1 * @return 读出的Excel中数据的内容 * @throws FileNotFoundException * @throws IOException */ public static String[][] getData(File file, int ignoreRows) throws FileNotFoundException, IOException { List int rowSize = 0; BufferedInputStream in = new BufferedInputStream(new FileInputStream( file)); // 打开HSSFWorkbook POIFSFileSystem fs = new POIFSFileSystem(in); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFCell cell = null; for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) { HSSFSheet st = wb.getSheetAt(sheetIndex); // 第一行为标题,不取 for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) { HSSFRow row = st.getRow(rowIndex); if (row == null) { continue; } int tempRowSize = row.getLastCellNum() + 1; if (tempRowSize > rowSize) { rowSize = tempRowSize; } String[] values = new String[rowSize]; Arrays.fill(values, ""); boolean hasValue = false; for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) { String value = ""; cell = row.getCell(columnIndex); if (cell != null) { // 注意:一定要设成这个,否则可能会出现乱码 cell.setEncoding(HSSFCell.ENCODING_UTF_16); switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: value = cell.getStringCellValue(); break; case HSSFCell.CELL_TYPE_NUMERIC: if (HSSFDateUtil.isCellDateFormatted(cell)) { Date date = cell.getDateCellValue(); if (date != null) { value = new SimpleDateFormat("yyyy-MM-dd") .format(date); } else { value = ""; } } else { value = new DecimalFormat("0").format(cell .getNumericCellValue()); } break; case HSSFCell.CELL_TYPE_FORMULA: // 导入时如果为公式生成的数据则无值 if (!cell.getStringCellValue().equals("")) { value = cell.getStringCellValue(); } else { value = cell.getNumericCellValue() + ""; } break; case HSSFCell.CELL_TYPE_BLANK: break; case HSSFCell.CELL_TYPE_ERROR: value = ""; break; case HSSFCell.CELL_TYPE_BOOLEAN: value = (cell.getBooleanCellValue() == true ? "Y" : "N"); break; default: value = ""; } } if (columnIndex == 0 && value.trim().equals("")) { break; } values[columnIndex] = rightTrim(value); hasValue = true; } if (hasValue) { result.add(values); } } } in.close(); String[][] returnArray = new String[result.size()][rowSize]; for (int i = 0; i < returnArray.length; i++) { returnArray[i] = (String[]) result.get(i); } return returnArray; } /** * 去掉字符串右边的空格 * @param str 要处理的字符串 * @return 处理后的字符串 */ public static String rightTrim(String str) { if (str == null) { return ""; } int length = str.length(); for (int i = length - 1; i >= 0; i--) { if (str.charAt(i) != 0x20) { break; } length--; } return str.substring(0, length); } } 这里介绍2种Java读写Excel的方式,一种是jxl,一种是poi,这2种方式都可以快速读写Excel文件,下面我简单介绍一下实现过程,实验环境win10+jdk1.8+eclipse,主要内容如下: 这是简单的Java读写excel文件的方式,纯Java写的,跨平台,对中文支持较好,可以快速处理excel文件,这里需要先导入jxl jar包,这个直接到网上搜就行,很多,下面我简单介绍一下这种方式: 读取Excel文件,测试代码如下,基本思路很简单,先获取Excel文件,然后获取工作簿,最后按行按列读取单元格就行: 点击运行这个程序,就可以读取Excel单元格内容,如下: 写入Excel文件,测试代码如下,基本思路先创建Excel文件,然后创建工作簿,然后向对应单元格写入数据就行: 点击运行这个文件,就会在当前目录下生成一个excel文件,内容如下,就是刚才写入的内容: 相对于jxl来说,poi的功能更强大一些,除了可以读写Excel文件外,还支持Word的读写,这里也需要先导入poi jar包,这个直接到官网上下载就行,下面我简单介绍一下这种方式: 1.读取Excel文件,测试代码如下,基本思路先获取Excel文件,然后获取工作簿,最后读取单元格内容就行: 点击运行这个程序,已经成功读取Excel文件内容,如下: 2.写入Excel文件,测试代码如下,基本思路和上面一样,创建Excel文件,创建工作簿,写入数据: 点击运行程序,就会在当前目录下生成一个Excel文件,内容如下,就是刚才代码中写入的数据: 至此,我们就完成了利用Java来读写Excel文件。总的来说,这2种方式都非常简单,思路也很清晰,只要你有一点Java基础,熟悉一下相关代码,很快就能掌握的,网上也有相关教程和资料,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言。Java如何轻松读写Excel表格?都有哪些方式可供参考?
jxl读写excel文件
poi读写Excel文件