POI读取Excel2003数据存储数据库
1、JSP Form表单部分代码(关键:enctype="multipart/form-data")
<FORM id=impform name=impform action="ImportOperation1.jsp"
method=post enctype="multipart/form-data" onSubmit="onSave();return false">
<TABLE class=viewform width="100%">
<COLGROUP>
<COL width="20%">
<COL width="80%">
<TBODY>
<TR class=Title>
<TH colSpan=2><%=SystemEnv.getHtmlLabelName(19464,user.getLanguage())%></TH></TR>
<TR class=spacing>
<TD class=line1 colSpan=2 ></TD></TR>
<TR class= Spacing><TD class=Line colSpan=2></TD></TR>
<TR>
<TD><%=SystemEnv.getHtmlLabelName(16699,user.getLanguage())%></TD>
<TD class=Field>
<input class=inputstyle type=file name="filename" size=40>
<button Class=AddDoc type=button onclick="onSave(this)">
<%=SystemEnv.getHtmlLabelName(18596,user.getLanguage())%></button> </TD>
</TR>
<TR class= Spacing><TD class=Line colSpan=2></TD></TR>
<%
String msg="";
if(request.getAttribute("msg")!=null){
msg = Util.null2String((String)request.getAttribute("msg"));
}
if(msg!=""){
%>
<TR>
<td id="msg" align="left" colspan="3">
<font size="2" color="#FF0000"><%=msg %></font>
</td>
</TR>
<%} %>
<TR>
<td><a href="markerInformation1.xls"><%=SystemEnv.getHtmlLabelName(18616,user.getLanguage())%></a></td>
</TR>
<TR>
<td align="left" colspan="3">
说明:请按模板排列导入EXCEL文档中各字段的顺序 </td>
</TR>
<TR class= Spacing><TD class=Line1 colSpan=2></TD></TR>
</TBODY>
</TABLE>
<div id='_xTableLoadmask' style='background:#FFFFFF;padding:3px;width:100%;display:none' valign='top'></div>
</FORM>
2、接收请求ImportOperation1.jsp
<%@page import="weaver.file.FileUploadToPath"%>
<%@ page import="weaver.general.Util" %>
<%@ page import="java.util.*" %>
<%@ page language="java" contentType="text/html; charset=GBK" %> <%@ include file="/systeminfo/init.jsp" %>
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page" />
<%@ page import="westvalley.basis.Markerinformation"%>
<%
//文件上传
FileUploadToPath fu = new FileUploadToPath(request) ;
//上传后的文件路径
filename = fu.uploadFiles("filename");
Markerinformation mi = new Markerinformation(request,response);
mi.import1Data(filename,request);
//进行导入
System.err.println("信息"+mi.getMsg());
request.setAttribute("msg", mi.getMsg());
request.getRequestDispatcher("import1.jsp").forward(request, response);
%>
3、读取Excel内容并插入数据
/**
* 市场信息反馈导入来自营销中心
* @param Excelfilepath
* @throws Exception
*/
public String import1Data(String path,HttpServletRequest request) throws IOException {
InputStream is = new FileInputStream(path);
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
msg = "";
User localUser = (User)request.getSession(true).getAttribute("weaver_user@bean");
String strUserId = Util.null2String(localUser.getUID());
try {
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);
int checkresult = check1Header(hssfSheet);
if(checkresult !=-1){
msg += "数据导入失败,第"+(checkresult)+"行,表头有误,与模板中的表头不一样,请认真核对";
}
if("".equals(msg)){
// 读取列数
for (int i = 0; i < hssfWorkbook.getNumberOfSheets(); i++) {
// 读取行数
for (int j = 1; j <= hssfSheet.getLastRowNum(); j++) {
HSSFRow hssfRow = hssfSheet.getRow(j);
if (hssfRow != null) {
HSSFCell classify_timeCell = hssfRow.getCell((short)0);
HSSFCell areaCell = hssfRow.getCell((short) 1);
HSSFCell typeCell = hssfRow.getCell((short) 2);
HSSFCell keywordCell = hssfRow.getCell((short) 3);
HSSFCell information_feedbakCell = hssfRow.getCell((short) 4);
HSSFCell note1Cell = hssfRow.getCell((short) 5);
HSSFCell note2Cell = hssfRow.getCell((short) 6);
HSSFCell advise_feedbakCell = hssfRow.getCell((short) 7);
String classify_time = trimToString( getValue(classify_timeCell).equals("")?"":getValue(classify_timeCell)+"-01"); //月份
String area ="";
if(areaCell!=null){
area = trimToString( getValue(areaCell)); //区域
}else{
msg += "第"+(j)+"行,第"+(2)+"列,区域不能为空!<br>";
continue;
}
String type = trimToString( returnType(getValue(typeCell).trim())); //类型
if("7".equals(type)){
msg += "第"+(j)+"行,第"+(3)+"列,分类错误!<br>";
continue;
}
String keyword = trimToString( getValue(keywordCell)); //关键字
String information_feedbak = trimToString( getValue(information_feedbakCell)); //信息反馈
String note1 = trimToString( getValue(note1Cell)); //备注1
String note2 = trimToString( getValue(note2Cell)); //备注2
String advise_feedbak = trimToString( getValue(advise_feedbakCell)); //建议-反馈
//拼接插入语句
String strInsertSql = " INSERT INTO marker_information_back("+
"classify_time,"+
"area,"+
"type,"+
"keyword,"+
"information_feedbak,"+
"note1,"+
"note2,"+
"advise_feedbak,"+
"create_id,"+
"create_time) values ("
+ "'"+ classify_time+ "',"
+ "'"+ area+ "',"
+ "'"+ type+ "',"
+ "'"+ keyword+ "',"
+ "'"+ information_feedbak+ "',"
+ "'"+ note1+ "',"
+ "'"+ note2+ "',"
+ "'"+ advise_feedbak+ "',"
+ "'"+ strUserId+ "',"
+ "GETDATE()) ";
System.out.println(strInsertSql);
rs2.executeSql(strInsertSql);
}
}
}
if("".equals(msg)){
msg += "导入成功";
}else {
msg += "导入失败";
recordSetTrans.rollback();
}
}
} catch (Exception e) {
log.info("异常:"+e);
}
return msg;
}
/**
* 校验excle格式
* @param sheet
* @return
*/
private static int check1Header(HSSFSheet sheet) {
String cellValue ="";
for(int j=0;j<1;j++){//行
for(int i=0;i<8;i++){//列
HSSFRow row = sheet.getRow(0);
HSSFCell cell =row.getCell((short)i);
cellValue = cellToString(cell).trim();
if(j==0){
if(i==0){
if(!"月份".equals(cellValue)){return i;}
}
if(i==1){
if(!"地区".equals(cellValue)){return i;}
}
if(i==2){
if(!"分类".equals(cellValue)){return i;}
}
if(i==3){
if(!"关键字".equals(cellValue)){return i;}
}
if(i==4){
if(!"信息反馈".equals(cellValue)){return i;}
}
if(i==5){
if(!"备注1".equals(cellValue)){return i;}
}
if(i==6){
if(!"备注2".equals(cellValue)){return i;}
}
if(i==7){
if(!"建议-反馈".equals(cellValue)){return i;}
}
}
}
}
return -1;
}
/**
* 校验表头
* @param sheet
* @return
*/
private static int check2Header(HSSFSheet sheet) {
String cellValue ="";
for(int j=0;j<1;j++){//行
for(int i=0;i<6;i++){//列
HSSFRow row = sheet.getRow(0);
HSSFCell cell =row.getCell((short)i);
cellValue = cellToString(cell).trim();
if(j==0){
if(i==0){
if(!"客户名称".equals(cellValue)){return i;}
}
if(i==1){
if(!"日期".equals(cellValue)){return i;}
}
if(i==2){
if(!"上年采购".equals(cellValue)){return i;}
}
if(i==3){
if(!"今年采购".equals(cellValue)){return i;}
}
if(i==4){
if(!"信息反馈".equals(cellValue)){return i;}
}
if(i==5){
if(!"备注".equals(cellValue)){return i;}
}
}
}
}
return -1;
}
public String returnType(String str){
String result ="";
if("产品".equals(str)){
result ="1";
}else if("功能、性能".equals(str)){
result ="2";
}else if("市场".equals(str)){
result ="3";
}else if("体验".equals(str)){
result ="4";
}else if("质量".equals(str)){
result ="5";
}else if("其它".equals(str)){
result ="6";
}else{
result ="7";
}
return result;
}
4、模板
月份 | 地区 | 分类 | 关键字 | 信息反馈 | 备注1 | 备注2 | 建议-反馈 |
2015-10 | 福建 | 市场 | 第三方 | ||||
2015-10 | 福建 | 市场 | 行业 |
相关推荐
在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效地存入 MySQL 数据库。 首先,要开始使用 POI,你需要在你的项目中引入相应的依赖。如果你使用的是 Maven...
在IT行业中,定时读取Excel更新到数据库是一项常见的任务,特别是在数据管理、数据分析或业务自动化等领域。本场景中,我们使用的Excel版本是2003,这是一个较早的版本,但依然广泛应用于许多组织。以下将详细介绍...
本篇将详细讲解如何使用Apache POI读取Excel文件中的带格式数据。 首先,理解Apache POI的基本架构至关重要。POI提供了HSSF(Horrible Spreadsheet Format)用于处理老版本的.xls文件,而XSSF用于处理较新的.xlsx...
接下来,我们创建一个Java类,用POI读取Excel文件。首先打开文件并创建一个Workbook对象,然后获取第一个Sheet,接着遍历每个Row和Cell以获取数据: ```java import org.apache.poi.ss.usermodel.*; import org....
技术要点1:POI读取Excel POI(Poor Obfuscation Implementation)是一个Java库,用于读取和写入Microsoft Office文件格式,包括Excel、Word和PowerPoint等。POI提供了对Excel文件的读取和写入功能,可以读取Excel...
5. Python库:Python提供了pandas、openpyxl、xlrd/xlwt等库,可以方便地读取Excel数据并使用pandas DataFrame操作,再通过SQLAlchemy或pyodbc等工具将数据写入数据库。 6. 自定义应用程序:开发基于C#、Java或其他...
本篇文章将深入探讨如何利用POI技术读取Excel中的数据,进行比对,并将比对结果存储回Excel。 首先,我们需要在项目中引入Apache POI库。通常,通过Maven或Gradle这样的构建工具添加依赖即可: ```xml <!-- Maven ...
使用POI读取Excel数据的基本步骤如下: 1. 加载Excel文件:使用`WorkbookFactory.create()`方法创建一个`Workbook`实例。 2. 获取工作表:通过`Workbook`对象的`getSheetAt()`或`createSheet()`方法获取或创建工作...
本示例将详细讲解如何使用Apache POI库来读取Excel数据,并将其存储到数据库中。在这个过程中,我们将涉及到日期、字符串和整型数据的转换。 首先,确保已添加Apache POI依赖到你的项目中。在Maven项目中,可以在...
标题中的“poi作excel导入数据库”指的是使用Apache POI库来读取Excel文件,并将数据存储到数据库中。Apache POI是Java平台上的一个开源项目,它提供了处理Microsoft Office格式文档的能力,包括Excel(.xls和.xlsx...
在Java开发中,POI库被广泛用于生成、修改和读取Excel文档。本篇将深入探讨如何利用Apache POI来操作Excel模板,以及如何读取数据并将其填充到新生成的文件中,最终提供下载。 首先,你需要在项目中引入Apache POI...
1. 使用Apache POI读取Excel文件,遍历每一行每一列,将数据存储到Java对象中。 2. 创建JDBC连接,与数据库建立通信。这通常涉及到设置数据库URL、用户名、密码等信息。 3. 预编译SQL语句,根据Excel中的数据生成...
Java 使用 Apache POI 读取 Excel 文件是一种常见的数据处理任务,尤其在数据分析、报表生成以及自动化测试等场景中。Apache POI 是一个流行的开源库,它允许开发者在 Java 应用程序中创建、修改和显示 Microsoft ...
在Java编程中,将TXT文件...以上就是关于"Java读取txt数据入数据库然后读出使用POI创建excel"的知识点,希望对你有所帮助。这个过程中需要注意的是数据的正确性、异常处理以及资源的及时关闭,确保程序的健壮性和效率。
在服务层,我们可以编写逻辑来读取Excel文件,然后调用DAO层的方法将数据插入MySQL数据库。 以下是具体步骤: 1. **读取Excel文件**:使用POI,创建一个`Workbook`对象,根据Excel文件类型选择`HSSFWorkbook`或`...
在本项目中,主要使用POI来处理Excel文件,读取数据并将其导入到数据库,或者从数据库中导出数据到Excel文件。 4. **Thymeleaf**: Thymeleaf是一个现代的服务器端Java模板引擎,可以处理HTML、XML、JavaScript、CSS...
在这个项目中,我们有一个名为"C++实现从TXT或Excel读取数据写入数据库小工具"的实用程序,它利用C++编程语言来实现数据的读取和存储功能。这个工具能够帮助开发者高效地处理来自文本文件(如TXT)和电子表格文件...
本教程将详细介绍如何使用Apache POI读取Excel文件,并提供一个适合导入数据库的解决方案。 首先,Apache POI提供了一个名为`HSSFWorkbook`的类,用于处理Excel的`.xls`格式(Excel 97-2007格式),而`XSSFWorkbook...
3. **数据验证与转换**: 在读取数据后,我们可能需要进行数据验证(如非空检查、类型匹配等)和转换(如日期格式化、数字处理等),确保数据符合数据库的存储要求。 4. **批量插入数据库**: 为了提高性能,通常不...
通过以上知识,开发者可以构建一个程序,读取Excel文件,利用Apache POI和XMLBeans解析数据,然后借助JDBC将数据导入到任何支持的数据库系统中。这在数据迁移、报表处理或数据分析场景中非常常见。