数据的代码按树形结构编码,每行数据有三列,code、name、description,每条数据可行占到多行,即name和description可能多行,但code只会占一行。
ResouceClassDao dao = new ResouceClassDaoImpl();
public RowObj readSheetAndInsert(Sheet st, int typeId)
throws BiffException, IOException {
int rows = st.getRows();
Stack<RowObj> parentObjs = new Stack<RowObj>();
RowObj curParentObj = new RowObj();
int count = 0;
// 读取excel数据
for (int i = 0; i < rows; i++) {
Cell cell = st.getCell(0, i);
String code = cell.getContents().trim();
if (code != null && code.length() > 0) {
cell = st.getCell(1, i);
String name = cell.getContents().trim();
cell = st.getCell(2, i);
String description = cell.getContents().trim();
RowObj obj = new RowObj();
obj.setTypeId(typeId);
obj.setCode(code);
obj.setName(name);
obj.setDescription(description);
count++;
String parentCode = curParentObj.getCode();
System.out.print(parentCode + "|" + code);
while (parentCode != null && code.indexOf(parentCode) < 0) {
curParentObj = parentObjs.pop();
parentCode = curParentObj.getCode();
}
System.out.println(" *" + parentCode + "|" + code);
curParentObj.getSubObjs().add(obj);
parentObjs.push(curParentObj);
curParentObj = obj;
} else {
cell = st.getCell(1, i);
String name = cell.getContents().trim();
curParentObj.setName(curParentObj.getName() + name);
cell = st.getCell(2, i);
String description = cell.getContents().trim();
curParentObj.setDescription(curParentObj.getDescription()
+ description);
}
}
System.out.println("count=" + count);
return parentObjs.firstElement();
}
// excel导入
public void importExcel(String fileName) throws BiffException, IOException {
InputStream is = new FileInputStream(fileName);
//
Workbook wb = null;
wb = Workbook.getWorkbook(is);
Sheet[] sheets = wb.getSheets();
TransactionManager transactionManager = new TransactionManager();
try {
transactionManager.begin();
for (int k = 0; k < sheets.length; k++) {
RowObj rootObj = readSheetAndInsert(sheets[k], k + 1);
insertData(rootObj, 0);
}
transactionManager.commit();
} catch (Exception e) {
e.printStackTrace();
try {
transactionManager.rollback();
} catch (RollbackException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
throw new RuntimeException(e);
}
}
public void insertData(RowObj obj, int level) throws Exception {
ResouceClassBean bean = new ResouceClassBean();
String space = "";
for (int i = 0; i < level; i++) {
space = space + " ";
}
if (obj.getCode() != null) {
System.out.println(space + obj.getCode() + "|" + obj.getName()
+ "|" + obj.getDescription());
bean.setTct_id(obj.getTypeId());
bean.setTctc_code(obj.getCode());
bean.setTctc_name(obj.getName());
bean.setTctc_brief_name(bean.getTctc_name());
bean.setTctc_remark(obj.getDescription());
bean.setTctc_parent_id(obj.getParentId());
dao.insert(bean);
}
level++;
List<RowObj> subObjs = obj.getSubObjs();
if (subObjs != null && subObjs.size() > 0) {
for (RowObj rowObj : subObjs) {
rowObj.setParentId(bean.getTctc_id());
insertData(rowObj, level);
}
}
}
private class RowObj {
private String code;
private String name;
private String description;
private String parentId;
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
private int typeId;
public int getTypeId() {
return typeId;
}
public void setTypeId(int typeId) {
this.typeId = typeId;
}
private List<RowObj> subObjs = new ArrayList<RowObj>();
public List<RowObj> getSubObjs() {
return subObjs;
}
public void setSubObjs(List<RowObj> subObjs) {
this.subObjs = subObjs;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
f
分享到:
相关推荐
该博客中提到的"ExecleToDBUtils.java"文件,很可能是用于读取Excel并将其数据转换为适合存储在Oracle数据库中的格式的工具类。这个类可能包含以下功能: 1. **读取Excel**:使用Apache POI库,可以读取Excel文件的...
用java把excel表的数据导入到数据库(可能有些类型还没考虑完全,抽空写的) 简单的思路 ... 二、读取excel文件的数据(注意:excel文件的数据表字段的顺序与该表的顺序一致,有空再做导出) 三、拼接sql
在Java Excel报表的上下文中,组合模式用于构建树形结构,代表组织中的部门或职位,每个节点可以是另一个子组织或者是个体员工。通过这种方式,我们可以方便地遍历和操作整个组织架构,无论是顶层的公司部门还是底层...
最常用的是DOM,因为它允许以树形结构处理XML文档,便于操作。 5. **字符资源与XML文件**: - 在Android中,字符串资源通常存储在res/values/strings.xml文件中,这样可以方便地进行本地化和代码分离。将Excel数据...
标题中的“Extjs 从grid中导出Excel表格”指的是使用ExtJS框架,一个流行的JavaScript库,来将数据从Grid组件导出到Microsoft Excel格式的文件。在ExtJS中,Grid是一个用于展示数据的组件,它支持各种操作,如排序、...
首先,需要读取Excel文件并将数据加载到内存中,然后构建树形结构。反之,从树控件导出数据到Excel,需要遍历树节点,创建新的工作表并写入数据。这通常需要编程技巧,如使用VBA或C#等。 4. **树控件与XML的交互**...
在实际项目中,我们可能会先读取Excel数据,将其转换为适当的数据结构(如DataTable或自定义类的集合),然后将这些数据绑定到TreeView和DataGridView。例如,TreeView可以显示工作簿和工作表的名称,而...
本文将详细介绍如何使用Java编程语言将Excel表格中的数据导入到Oracle数据库中。这一过程涉及到的关键技术包括:使用JDBC连接Oracle数据库、通过ODBC读取Excel文件以及利用PreparedStatement执行SQL语句。 #### ...
解析器会识别XML文档的元素、属性和值,将其组织成树形结构,便于后续处理。 2. **映射XML结构到Excel格式**:XML的结构可能与Excel表格的行和列不完全匹配。因此,需要确定如何将XML元素映射到Excel的单元格。这...
《Excel生成SQL语句小工具详解》 在日常的数据处理工作中,我们经常需要将Excel表格中的数据导入到数据库中,而手动编写...无论是对普通用户还是开发者,它都是一款值得信赖的助手,为数据管理工作带来了极大的便利。
1. **读取Excel**:使用适当的库读取Excel文件并获取数据。 2. **数据转换**:将Excel数据转换为结构化的XML元素和属性。 3. **生成XML**:使用XML库生成符合特定模式的XML文件。 此外,还可以用Excel作为数据输入...
反之,从Excel导入到树形控件时,需要读取Excel文件,解析工作表中的数据,然后根据这些数据构建树形结构。 3. **C#和ASP.NET的应用**: - **C#**:作为.NET框架的主要编程语言,C#提供了丰富的库和API来处理XML、...
这个场景中,我们需要将JSON数据转换成Excel表格,这是Python中一个实用且频繁的需求。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于网络API和数据存储。而Excel则是一个常用的电子表格...
DOM解析器将整个XML文件加载到内存中,形成一个树形结构,适合小到中等大小的文件。SAX和StAX则采用事件驱动模型,只处理文件的一部分,适合大文件或资源有限的情况。 读取XML文件的基本步骤如下: 1. 引入Java的...
在Python中,可以使用`xml.etree.ElementTree`库来创建和操作XML树形结构。我们可以先创建XML根元素,然后根据Excel数据动态添加子元素和属性,最后用`ElementTree`的`write()`方法将XML树写入文件。 实现这一过程...
1. **读取Excel文件**:可以使用Microsoft的COM接口(如Microsoft Office Interop库)或者第三方库如libxl、pandas(在C++中通过Python绑定)来读取Excel数据。这些库允许程序访问Excel文件中的工作表、单元格等信息...
这个“java_tree_excel.zip”文件提供了一个这样的解决方案,特别关注如何将树形结构的数据有效地展示在Excel表格中。这个场景在数据分析、报表生成和数据可视化中非常常见,尤其是在需要将层次结构清晰展示的情况下...
1. **多级目录**:在计算机系统中,目录结构通常采用树形结构,一级目录下可以包含多个子目录,子目录下还可以继续包含更深层的目录,这就是所谓的多级目录。多级目录使得文件和文件夹的组织更为有序,便于查找和...
当需要将Excel数据转换为XML时,DOM4J可以帮助我们构建XML文档的树形结构。下面是一个简单的例子,展示了如何使用DOM4J创建XML文档: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import...
解析器会构建一个树形数据结构来表示这些元素及其关系。 2. **映射到表格结构**:解析完成后,软件会根据XML的结构设计Excel表格的布局。根元素可能对应于Excel工作表,子元素可以转换为行,而属性和元素值则填充到...