excel用java解析,开始的时候不难,但是难就难在2003版本与2007以上版本的兼容解析。搞了半天终于搞定了。下面是我修改的代码。
package com.test;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.pojo.VHrUser;
/**
* 用户从Excel批量导入
*/
public class UserImport {
private static final int version2003 = 2003;
private static final int version2007 = 2007;
private static int version = version2003;
private static Workbook wb = null;
private static Sheet sheet=null;
private static Cell cell = null;
private static org.apache.poi.ss.usermodel.Row row=null;
public List readExcel(String excelFilePath) throws IOException {
if (excelFilePath.endsWith(".xls"))
version = version2003;
else if (excelFilePath.endsWith(".xlsx"))
version = version2007;
List list = new ArrayList();
InputStream stream=null;
if (version == version2003) {
stream = new FileInputStream(excelFilePath);
wb = (Workbook) new HSSFWorkbook(stream);
} else if (version == version2007) {
wb = (Workbook) new XSSFWorkbook(excelFilePath);
}
sheet = wb.getSheetAt(0);
// 行数(从0开始,相当于最后一行的索引),列数
int count_row=sheet.getLastRowNum(),count_cell=sheet.getRow(0).getPhysicalNumberOfCells();
String[][] str=new String[count_row][count_cell];
for (int i = 0; i < count_row; i++) {
for (int j = 0; j < count_cell; j++) {
row=sheet.getRow(i+1);
cell=((org.apache.poi.ss.usermodel.Row) row).getCell(j);
int type = cell.getCellType(); // 得到单元格数据类型
String k="";
switch (type) { // 判断数据类型
case Cell.CELL_TYPE_BLANK:
k = "";
break;
case Cell.CELL_TYPE_BOOLEAN:
k = cell.getBooleanCellValue() + "";
break;
case Cell.CELL_TYPE_ERROR:
k = cell.getErrorCellValue() + "";
break;
case Cell.CELL_TYPE_FORMULA:
k = cell.getCellFormula();
break;
case Cell.CELL_TYPE_NUMERIC:
if(DateUtil.isCellDateFormatted(cell)){
k = new DataFormatter().formatRawCellContents(cell.getNumericCellValue(), 0, "yyyy-mm-dd");// 格式化日期
}else{
k=cell.getNumericCellValue()+"";
}
break;
case Cell.CELL_TYPE_STRING:
k = cell.getStringCellValue();
break;
default:
break;
}
str[i][j]=k;
}
}
cell=null;
row=null;
sheet=null;
wb=null;
for (int k = 0; k < str.length; k++) {
String[] temp_str=str[k];
VHrUser vUser=new VHrUser();
for (int s = 0; s < temp_str.length; s++) {
vUser.setUsername(temp_str[s]);
vUser.setPassword(temp_str[s+1]);
vUser.setDate(temp_str[s+2]);
list.add(vUser);
break;
}
}
return list;
}
public static void main(String[] args){
UserImport i=new UserImport();
try {
List<VHrUser> vuser_list = i.readExcel("d:\\excel.xlsx");
for (VHrUser user : vuser_list) {
System.out.println("用户姓名=="+user.getUsername());
}
} catch (IOException e) {
e.printStackTrace();
}
System.exit(0);
}
}
package com.pojo;
public class VHrUser {
private String username;
private String password;
private String date;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
分享到:
相关推荐
1. **导入流程**:通常,实现Excel导入数据涉及以下步骤: - 准备Excel文件:整理好需要导入的数据,确保格式与数据库字段对应。 - 编写或配置导入脚本:在织梦后台,开发者需要编写一个PHP脚本,解析Excel文件,...
标题中的"导入Excel2003-2007兼容问题,4个包"指的就是这种兼容包,它们可以安装在Excel 2003上,使得用户能够打开、编辑和保存Excel 2007创建的.xlsx文件。 描述中提到的“这4个jar包完美解决兼容性问题”表明这些...
本文将深入探讨如何使用一个优秀的Java库来高效地实现Excel的导入和导出,尤其针对Excel 2003和2007格式的兼容性。 标题中的“好用的excel导入导出工具for Java”指的是Java开发中的一种专门处理Excel的库,它允许...
1. **Excel导入解析**: - 使用库:`xlsx`库是一个广泛使用的JavaScript库,它支持读取和写入多种文件格式,包括.xlsx、.xls、.csv等。通过`XLSX.read()`方法,我们可以读取Excel文件并将其解析为JSON对象,方便...
在导入Excel数据时,确保Excel表头与数据窗口字段对应是关键步骤。通常,开发者会编写一个全局函数,通过比较两个数据结构的列名来实现自动匹配。这个函数可能会包括以下步骤: 1. **读取Excel文件**:使用PB的ADO...
在从Excel 2003迁移到更高版本,如Excel 2007时,用户可能会遇到兼容性问题、功能差异以及数据格式的变化。下面我们将详细探讨这些方面: 1. **兼容性问题**: - Excel 2003使用的是.XLS文件格式,而Excel 2007...
3. KML到Excel转换:这个过程通常涉及到解析KML文件中的地理位置数据,并将其导入到Excel表格中,以便于进一步的分析和操作。转换可能涉及提取坐标、解析地标、路径等信息。 4. 宏(Macros):在Excel中,宏是一...
1. **Excel导入原理**: Jeecg框架提供了对Excel数据导入的支持,其工作原理通常是读取Excel文件中的数据,然后按照预定义的映射规则,将这些数据存储到数据库中。这一过程涉及到了文件读取、数据解析、数据验证...
- **数据分析**:对于需要频繁分析数据的知识工作者,可以直接在Obsidian中导入Excel表格,便于快速查看和编辑数据,同时Markdown格式方便与其他系统集成。 - **项目管理**:在项目管理中,可以创建任务清单、进度...
在SQL Server 2008 R2中,从Excel导入数据是一个常见的操作,这有助于将大量数据快速转移到数据库系统,以便进行分析、处理或存储。然而,这个过程可能会遇到一些挑战,以下是一些关键点,确保您能顺利进行数据导入...
2. **Excel导入**: - 读取Excel文件:使用POI库,打开本地文件,获取工作簿和工作表。 - 数据解析:遍历每一行,读取每个单元格的数据,根据业务需求进行类型转换。 - 数据验证:对导入的数据进行校验,确保符合...
- 安全性:直接从Excel导入数据可能会引入潜在的安全风险,比如恶意代码。因此,建议先对Excel数据进行清理和验证。 在提供的文件“mssql导入数据.doc”中,可能详细阐述了这些步骤,包括具体的操作截图和可能遇到...
综上所述,ASP.NET实现Excel导入导出涉及多种技术和策略,开发者可以根据项目需求选择合适的方法。无论是直接操作Excel对象,还是利用OpenXML或第三方库,都需要考虑兼容性、性能和安全性等因素。在实际开发过程中,...
以下是使用`JxonExcel`进行JSON-Excel导入导出的一些关键知识点: 1. **安装**:首先,你需要在项目中引入`JxonExcel`库。如果你使用的是Java项目,可以通过Maven或Gradle等构建工具添加依赖。对于其他语言,例如...
在JavaScript中导入Excel文件,尤其是在兼容古老的Internet Explorer 11(IE11)浏览器时,需要考虑到这个浏览器并不支持现代的File API和其他先进的Web技术。本文将深入探讨如何实现这一功能,以及涉及到的关键知识...
总的来说,ASP.NET批量导入Excel兼容2007涉及的主要知识点包括:使用第三方库(如NPOI、EPPlus、Aspose.Cells)操作Excel文件,读取和解析数据,批量处理与优化,数据验证,错误处理以及用户交互设计。通过掌握这些...
本篇将深入探讨如何使用POI库来解析和创建2003及2007版本的Excel文件,并提供相关实例和类包。 Apache POI提供了两个主要的API,HSSF(Horrible Spreadsheet Format)用于处理老版的BIFF8格式(.xls,Excel 2003及...
`xlsx`库能够解析和生成Excel格式的数据,允许开发者在前端进行数据的导入和导出,无需服务器端的支持。 1. **Excel文件格式**:Excel文件通常是`.xlsx`格式,这是一种基于Open XML标准的文件格式,由一系列XML文档...