通用Excel导入工具V1.0使用说明

简介:

通用Excel导入工具V1.0 

使用说明

    有时候我们的数据存放在Excel中(特别是对于用户来说更喜欢使用Excel收集一些常用数据),而系统又需要这些数据来处理其他业务,那么此时我们就 需要将这些数据导入到数据库中。但是鉴于Excel的样式多种多样,因此每次导入时都必须书写很多重复的代码。很明显对于一个软件开发者做这些重复劳动是 一件很无趣的事情。那么怎样来寻找一种通用的方法呢?今天我们就看一下如何解决这个问题。 

   总体设计思路 

    设 计通用Excel的目的就是为了避免重复工作,也就是说不必因为Excel的样式、数据等变化而重新从零做起、重复劳动。因此我们就必须抽取一个通用的东 西出来,使用时只需要关注相关的业务而不必过度关注相关excel操作和存储。再简单一点就是封装共同点,暴漏个性点。考虑到这种情况,我们可以使用配置 文件的方式来解决这个问题。在配置文件中我们配置Excle要导入的表、字段等信息,在进行导入时再依据配置文件将数据导入到数据库中。这样一来,在需要 进行Excel导入时只需要为某个或多个excel配置一个xml文件,然后调用相关的类就可以完成整个excel导入工作了。 

    补充说明:通用的局限性 

    在 这里说明一下,虽然我们设计的是一个通用的Excel导入程序,但是这里的"通用"只是相对来说的,并不是考虑了所有Excel的情况,因为Excel的 设计情况十分的复杂多样,要将所有的情况都考虑进去是一个漫长的过程。程序目前暂时不考虑包含统计行的情况(可以包含合并行、代码表字段等)。

    配置文件设计 

    考 虑使用xml配置的方式来设计通用Excel导入,如何设计好xml就成了设计的重点。对于单表导入(一个Excel主要导入到一个数据库表中,不排除牵 扯其他代码表的情况)我们的配置文件无论以数据库为基础设计(主要依据数据库表结构)还是以Excel(主要依据Excel格式设计)为基础设计都可以, 但如果是多表导入(也就是一个Excel可以导入到几张表中的情况)考虑其复杂性还是以数据库为基础更为合适。基于此种考虑,我们整个配置设计会以数据库 表结构为基础来设计。最终的配置文件设计样例如下:  

<?xml version="1.0"?>  <Config EndTag="RowBlank" HeaderIndex="1" DataIndex="2" WorkSheetCount="0">        <Table Name="" DeleteRepeat="true" ExcludedColumns="" >                <Column IsPrimaryKey="" ColumnName="" HeaderText="" Required="true" DataType="number" DataLength="100" DefaultValue="" Comment="">                    <CodeTalbe Name="" PrimaryKey=""  ReferenceColumn="" Condition=""/>          </Column>            </Table>  </Config>

 

Config节点

    Config节点位于最外层,代表整个配置。其属性EndTag(数据读取的结束标志,例如"RowBlank"代表空行结束,在读取Excel时遇到某行没有任何数据的情况则视为结束;也可以为某个列地址(如C),在导入时到了此列为空就会结束导入操作);

    HeaderIndex代表excel表头对应的行值,相当于标题行(默认从1开始)。

    DataIndex表示数据行起始行索引(从2开始)。

    WorkSheetCount表示对于整个Excel文件,如果其包含多个工作表,则会根据所设的值处理前几个工作表,属性值为0,则会处理所有工作表,默认为0。 

Table节点

    Table节点位于Config节点内,对应数据库中的表,可以有多个;

    Name属性对应要导入的表名称;

    DeleteRepeat属性表示是否删除重复行(如果为true则会根据主键先删除重复行再执行插入操作);

    ExcludedColumns表示排除列,多个列名使用","分割(这些字段不会导入)。 

Column节点

    Column节点位于Table节点内,对列的相应配置,通常有多个(注意对于excel中没有的列,而数据库表需要导入的,也需要配置Column节点,此时HeaderText为空或不配置HeaderText属性);

    IsPrimarykey属性表示是否为主键(当Table节点配置DeleteRepeat为ture时必须至少指定一个Column节点的    IsPrimaryKey为true,此属性是为delete条件做准备的[有可能它不是真正的主键]);

    ColumnName表示对应的列名;

    HeaderText表示对应的Excel列头(在依据Excel别名导入时根据此值确定导入的列);

    Required指定此列是否为必须导入的列(如果配置为true,excel中此列为空并且没有配置默认值则会抛出异常);

    DataType为数据类型(例如string、number、datetime用于数据校验);

    DefaultValue 为默认值(注意其值不一定是指定的字符值,可以是"Max"、"NewID"、如果指定为“WORKSHEETNAME”则取当前工作薄的名称做为其值, 如果为Max,那么此列必须为数值类型,此时在导入的时候如果需要使用默认值,就会在原来数据库表中此列最大值的基础上加上1导入到数据库中,如果为 NewID在导入的时候需要使用默认值系统就会自动生成Guid值);

    Comment是此列的说明。 

CodeTable节点

    在Column节点中还可以配置CodeTable节点,表示代码表。

    Name属性值表示引用表的表名称;

    PrimaryKey指待引用主表的主键,也就是子表的外键,Column配置节点的ColumnName属性值应该与CodeTable节点的PrimaryKey属性值设置一至,如以下配置:

<Column ColumnName="CategoryID" HeaderText="商品种类" DefaultValue="">

   <CodeTalbe Name="Categories" PrimaryKey="CategoryID"  ReferenceColumn="CategoryName"/>

</Column>

    ReferenceColumn 表示对应代码字段关联名称列,就是我们导入时所依据的excel对应值(例如CategoryID对应CategoryName,那么 ReferenceColumn就是CategoryName,往往Excel中可能存放的是类似于CategoryName的东西而不是 CategoryID,而导入操作时需要CategoryID)。 

导入实例说明:

图一 待导入Excel文件,可同时导入多个工作薄(WorkSheet)

 

图二 设置导入规则

图三 使用开发的导入工具进行导入

图四 导入完成后入库的数据


本文转自yonghu86 51CTO博客,原文链接:http://blog.51cto.com/yonghu/1321313,如需转载请自行联系原作者

相关文章
|
2月前
|
人工智能 Python
读取excel工具:openpyxl | AI应用开发
`openpyxl` 是一个 Python 库,专门用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件。它是处理 Excel 文件的强大工具,可以让你在不需要安装 Excel 软件的情况下,对 Excel 文件进行创建、修改、读取和写入操作【10月更文挑战第3天】
88 0
|
4月前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
48 0
|
22天前
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
26 1
|
24天前
|
数据可视化 数据挖掘 项目管理
打破协作壁垒,Excel多人协同编辑工具带来翻天覆地的变化!
在现代办公中,团队协作和信息共享至关重要。Excel的多人协同编辑功能显著提升了工作效率,避免了版本冲突和重复劳动。市场上的Google Sheets、Airtable、板栗看板和Zoho Sheet等工具也提供了类似功能。以其清晰的界面和强大的数据分析能力,特别适合项目管理和进度追踪,帮助团队高效协作,达成目标。
|
1月前
|
SQL 数据可视化 数据挖掘
想让Excel表格设计更美观?试试这几款好用工具!
Excel表格设计在项目管理和数据分析中至关重要。本文推荐四款辅助工具:板栗看板、Excel自动图表助手、Think-Cell Chart 和 Power BI,分别在任务管理、图表生成、数据可视化等方面表现突出,帮助你设计出更专业、美观的表格。
64 2
|
1月前
|
数据处理
在Excel中,通配符是一种强大的工具
【10月更文挑战第23天】在Excel中,通配符是一种强大的工具
25 4
|
3月前
|
SQL C# 数据库
EPPlus库的安装和使用 C# 中 Excel的导入和导出
本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。
EPPlus库的安装和使用 C# 中 Excel的导入和导出
|
4月前
|
数据可视化 数据格式 索引
我用Python操作Excel的两种主要工具
我用Python操作Excel的两种主要工具
|
4月前
|
人工智能 自然语言处理 小程序
【工具】Excel竟然也能搞AI,快来玩转chatexcel
ChatExcel是由北京大学团队开发的一款人工智能办公辅助工具,用户可通过自然语言与Excel表格互动,简化数据处理任务,如排序、求和等,无需手动编写公式或函数。本文介绍了ChatExcel的功能特点、使用方法及实操步骤,展示了如何通过简单指令完成复杂操作,提高工作效率。此外,还提供了新手指南帮助快速上手。
196 0
【工具】Excel竟然也能搞AI,快来玩转chatexcel
|
4月前
|
关系型数据库 MySQL Windows
MySQL数据导入:MySQL 导入 Excel 文件.md
MySQL数据导入:MySQL 导入 Excel 文件.md