public ActionForward importHcodeExcel(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
Num189AssignForm num189AssignForm = (Num189AssignForm) form;
FormFile uploads = num189AssignForm.getUploads();
String errormsg = null;//"Excel导入失败";
String type = request.getParameter("type");
try {
if (type != null && type.equalsIgnoreCase("submit")) {
String extendname = getFileExtendName(uploads);
if ("xls".equalsIgnoreCase(extendname)) {
User user = getUserInfo(request);
Num189Importer importer = getNum189Importer(request);
List message = importer.importHcode(uploads
.getInputStream(), user);
//若干条数据错误时,列出错误信息
request.setAttribute("errors", message);
/*
if (message.size() > 0) {
errormsg = (String) message.get(0);
}*/
if (message.size() == 0) {
errormsg = "Excel导入成功";
}
} else if ("".equalsIgnoreCase(extendname)) {//文件有扩展名
errormsg = "文件不是Excel文件";
} else {//没有上传文件
errormsg = "文件上传失败";
}
request.setAttribute("errormsg", errormsg);
}
} catch (Exception e) {
e.printStackTrace();
sysLogger.error("importHcodeExcel method:", e);
errormsg = "文件上传失败";
request.setAttribute("errormsg", errormsg);
}
return mapping.findForward("importHcodeExcel");
}
/**
* 得到上传文件的扩展名
*
* @param upload
* 文件类
* @return String extendname 文件的扩展名
*/
private String getFileExtendName(FormFile upload) {
if (upload == null) {
return null;
}
try {
String extendname = upload.getFileName();
String[] arr = StringUtils.split(extendname, ".");
if (arr != null && arr.length > 0) {
int num = arr.length;
return arr[(num - 1)];
}
} catch (Exception e) {
e.printStackTrace();
sysLogger.error("getFileExtendName method:", e);
}
return "";
}
private Num189Importer getNum189Importer(HttpServletRequest request) {
return (Num189Importer)Tools.getBean(request, "num189Importer");
}
public class Num189Importer {
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
private HSSFDataFormatter hdf;
private DateFormat df;
private final static Logger log = Logger.getLogger(Num189Importer.class);
public Num189Importer() {
hdf = new HSSFDataFormatter();
df = new SimpleDateFormat("yyyy-MM-dd");
}
/**
*
*
* @param ins
* 用于导入的Excel文件的输入流
* @return 错误消息列表
*/
public List importHcode(InputStream ins) {
if (log.isDebugEnabled())
log.debug("H码新建导入");
//保存错误信息集
List message = new ArrayList();
HSSFWorkbook wb = null;
try {
wb = new HSSFWorkbook(ins);
} catch (IOException e) {
log.error("读取输入流错误", e);
message.add("读取输入流错误。");
return message;
}
return handleWorkbookHcode(wb);
}
private List handleWorkbookHcode(HSSFWorkbook wb) {
List message = new ArrayList();
HSSFSheet sheet = wb.getSheetAt(0);
//取得数据库连接
Connection conn = null;
try {
conn = dataSource.getConnection();
conn.setAutoCommit(false);
} catch (SQLException e) {
log.error("访问数据库异常", e);
message.add("访问数据库异常");
return message;
}
//读取Excel文件数据
for (Iterator it = sheet.rowIterator(); it.hasNext();) {
HSSFRow hssfRow = (HSSFRow) it.next();
//
if (hssfRow.getRowNum() == 4) {
for (int h = 0; h < H0s.length; h++) {
int h0sLen = h + 3;
String strh0temp = getCellValue(hssfRow.getCell(h0sLen));
if(strh0temp != null && strh0temp.length()>=4){
H0s[h] = strh0temp.substring(0,4);
}else{
H0s[h] = getCellValue(hssfRow.getCell(h0sLen));
}
}
}
insertRowHcode(num189HLRVoList, message, conn, user);
}
if (message.size() == 0) {
if (log.isDebugEnabled())
log.debug("新建操作成功");
}
//关闭数据库连接
if (message.size() > 0) { //存在错误, 则事务回滚
rollback(conn);
} else {
commit(conn, message); //无错误发生, 则提交事务
}
return message;
}
private void insertRowHcode(List num189HLRVoList, List message, Connection conn, User user) {
if (log.isDebugEnabled())
log.debug("进入新建H码方法: insertRowHcode");
//插入操作
StringBuffer sqlSb = new StringBuffer("INSERT INTO TP_CDMA_RESOURCE(");
sqlSb.append("ROW_ID, HCODE_VALUE, TEL_PREXCODE,TML_ID,STATUS,");
sqlSb.append("create_date,last_modify_date,create_by,last_modify_by, REMARK, CDMA_PREFIX) ");
sqlSb.append("VALUES ");
sqlSb.append("(f_get_globalid,?,?,?,?,SYSDATE,SYSDATE,?,?,?,?)");
//取得电信管理区
String sql = "select t.row_id from ta_tml_cdma t where t.tml_name_text = ? ";
PreparedStatement psmt = null;
ResultSet rst = null;
String tmlId = "";
String hcodeValue = "";
try {
//根据城市,取得该城市的 电信管理区域ID
Num189HLRVo num189HLRVoTemp = (Num189HLRVo) num189HLRVoList.get(0);
psmt = conn.prepareStatement(sql);
psmt.setString(1, num189HLRVoTemp.getCityName());
rst = psmt.executeQuery();
while (rst.next()) {
tmlId = rst.getString(1);
}
rst.close();
if("".equals(tmlId)){
message.add("在第 " + num189HLRVoTemp.getLine() + "行,第 2 列,城市 " + num189HLRVoTemp.getCityName() + " 没有对应的本地网.");
}
hcodeValue = num189HLRVoTemp.getHcodeValue();
for (int i = 0; i < num189HLRVoList.size(); i++) {
Num189HLRVo num189HLRVo = (Num189HLRVo) num189HLRVoList.get(i);
psmt = conn.prepareStatement(sqlSb.toString());
psmt.setString(1, num189HLRVo.getHcodeValue());
psmt.setString(2, num189HLRVo.getTelPrexcode());
psmt.setString(3, tmlId);
psmt.setString(4, "ACTIVE");
psmt.setString(5, user.getRowId());
psmt.setString(6, user.getRowId());
psmt.setString(7, "导入");
psmt.setString(8, hcodeValue.substring(0,3));
psmt.executeUpdate();
}
if (log.isDebugEnabled())
log.debug("保存成功");
} catch (SQLException e) {
log.error("访问数据库异常", e);
message.add("访问数据库异常.");
} finally {
try {
if (psmt != null) {
psmt.close();
}
if (rst != null) {
rst.close();
}
} catch (SQLException e1) {
message.add("访问数据库异常!");
}
}
}
/**
* @return Returns the dataSource.
*/
public DataSource getDataSource() {
return dataSource;
}
}
分享到:
相关推荐
Matlab 导入 Excel 数据教程 Matlab 是一个功能强大的数据分析和处理工具,而 Excel 是一个广泛应用于数据存储和处理的电子表格软件。将 Excel 中的数据导入 Matlab 是一种常见的数据处理需求。以下是 Matlab 导入 ...
PB 中导入 EXCEL 数据 在 PowerBuilder 中,开发者常常需要将 EXCEL 数据导入到应用程序中,以便进行数据分析、处理和展示。在本文中,我们将探讨如何使用 PowerBuilder 将 EXCEL 数据导入到应用程序中。 OLE 对象...
在 Informatica 中导入 Excel 文件作为源文件 Informatica 是一个功能强大的数据集成平台,能够将来自多种来源的数据集成到一起。然而,对于不熟悉 Excel 的用户,如何将 Excel 文件导入 Informatica 作为源文件...
首先,要导入Excel文件到ListView,我们需要使用一个能够读取Excel文件的库,如Microsoft Office Interop库或更轻量级的第三方库,如NPOI。对于本示例,我们假设使用NPOI,因为它无需安装Office,可以跨平台运行。 ...
本文将详细介绍如何使用Jxls实现数据导入Excel的实例。 Jxls库的核心功能在于提供了一种声明式的方式来处理Excel模板,通过使用Apache POI库来操作Excel文件。它的主要优点是将数据和样式分离,让开发者可以专注于...
在Java编程中,多线程导入Excel数据是一项常见的任务,特别是在大数据处理和高并发场景下。这个场景通常涉及到性能优化和资源管理,以确保系统稳定性和数据一致性。下面将详细阐述多线程导入Excel数据的核心知识点。...
织梦DedeCMS批量导入Excel表文章内容插件是一款针对织梦内容管理系统(DedeCMS)设计的实用工具,主要用于高效、快速地导入大量文章内容。这个插件极大地提升了网站内容更新和管理的效率,尤其适合那些需要频繁更新...
### Navicat for MySQL 导入Excel中文乱码问题解决 #### 一、问题背景 在使用Navicat for MySQL工具进行数据导入时,经常会出现中文乱码的问题,尤其是在处理Excel文件时更为常见。这种现象不仅影响数据的正确性,...
### 如何利用Simulink导入Excel数据进行数据分析 #### 一、引言 在现代工程领域,特别是控制工程和系统仿真领域,Simulink作为MATLAB的一个重要组件,被广泛应用于建模、仿真以及分析复杂系统的动态行为。为了验证...
POI导入Excel并返回校验后的错误文件(原样数据文件,并添加批注,注:由于批注只能加1000条,会在Excel后面添加一栏错误信息)下载以及页面展示校验错误信息,同时添加导入进度条,提供页面js和css代码,后端...
在ASP(Active Server Pages)开发中,经常需要处理文件上传和数据...以上就是使用ASP上传并导入Excel文件至Access数据库的核心步骤和关键知识点。在实践中,需要根据具体需求调整代码,确保数据处理的准确性和安全性。
asp.net 导入excel时,处理合并表头、复杂表头、多行表头 1.解决复杂表头的Excel导入。可以解决任何复杂的表头。 2.导入时,显示请稍后。。。提醒框,完毕后会自动隐藏 3.全面扫描Excel数据,将所有异常详细信息写入...
在Spring Boot应用中,导入Excel文件并将数据存储到数据库是一项常见的任务,特别是在处理批量数据时。下面我们将详细探讨如何在Spring Boot项目中实现这个功能,涉及的主要知识点包括Spring的文件上传、Excel数据...
标题 "批量文件夹名称导入Excel" 描述了一个实用的操作,涉及到计算机文件管理与电子表格工具的结合使用。这个过程主要用于整理和记录大量文件,特别是当你需要对文件进行分类、跟踪或者分析时。以下是对这个主题的...
"Jeecg导入Excel"功能是Jeecg框架中的一个重要特性,允许用户通过上传Excel文件来批量导入数据到系统中,极大地提高了数据录入的效率。下面将详细介绍这一功能及其相关知识点。 1. **Excel导入原理**: Jeecg框架...
### SQL Server导入Excel数据的方法详解 #### 一、前言 在日常工作中,我们经常会遇到需要将Excel数据导入到SQL Server数据库中的情况。这不仅能够提高数据处理的效率,还能确保数据的一致性和准确性。本文将详细...
在Visual Studio(VS)开发环境中,使用代码导入Excel表中的数据是一项常见的任务,尤其是在数据分析、报表生成或数据处理的应用程序中。以下是一些关键的知识点,涵盖了如何从数据库导出数据到Excel,以及如何将...
### PowerDesigner 导入 Excel 生成表结构 #### 功能简介 PowerDesigner 是一款强大的数据建模工具,它支持多种方式来创建、管理和维护数据库模型。通过PowerDesigner的脚本功能,用户可以实现将Excel中的数据转换...
在Java编程中,导入Excel文件是一项常见的任务,特别是在数据处理和数据分析领域。为了支持不同版本的Excel文件以及CSV格式的数据,开发者需要了解并掌握相关的API和技术。以下将详细讲解如何在Java中处理`xls`、`...
Developer 导入 Excel 数据 作为一名经验丰富的 IT 行业大师,我将为您详细介绍 Developer 导入 Excel 数据的相关知识点。 标题解释 Developer 导入 Excel 数据是指使用 PLSQL Developer 工具将 Excel 文件中的...