Foxnic-SQL (15) —— 使用记录集导入或导出Excel

LeeFJ
• 阅读 469

Foxnic-SQL (15) —— 使用记录集导入或导出Excel

概述

  很多时候,我们需要将外部 Excel 表中的数据导入到数据库,或是需要将某个查询结果导出到 Excel 文件中,对于这种简单的操作,Foxnic-SQL 已经内置了 ExcelReader 和 ExcelWriter 用于处理 Excel 数据。
  本文中的示例代码均可在 https://gitee.com/LeeFJ/foxnic-samples 项目中找到。

读取Excel到RcdSet

  Foxnic-SQL 使用 ExcelReader 类读取 Excel 中某个 sheet 的数据,这些数据将被读取到 RcdSet,通过 RcdSet 可以完成数据库保存等操作。
  在读取 Excel 前需要定义 Excel 结构,将 Excel 列映射到数据库字段,如下代码所示。一旦 Excel 数据转换成 RcdSet ,开发人员就可以去做其它更多额外的数据处理。

/**
* 导入 Excel
* */
@Test
public void  importExcel() throws Exception {
    // 获得 DAO 对象
    DAO dao = DBInstance.DEFAULT.dao();
    // 获得导入的 Excel 文件
    MavenProject project=new MavenProject(this.getClass());
    File xlsx= FileUtil.resolveByPath(project.getSourceFile(this.getClass()).getParentFile() ,"data.xlsx");
    // 构建 Excel 列 与 表字段的对应关系
    ExcelStructure es=new ExcelStructure();
    es.addColumn("A","id");
    es.addColumn("B","name");
    es.addColumn("C","price");
    es.addColumn("D","create_time");
    //  从第二行开始读取
    es.setDataRowBegin(2);
    // 读取 Excel
    ExcelReader reader=new ExcelReader(xlsx);
    // 读取到 RcdSet
    RcdSet rs = reader.read("水果",es);
    // 遍历
    for (Rcd r : rs) {
        // 输出数据
        System.out.println(r.toJSONObject());
        // 生成 Insert 语句
        Insert insert=SQLBuilder.buildInsert(r,"example_goods",dao,true);
        System.out.println(insert.getSQL());
        // 生成 Update 语句
        Update update=SQLBuilder.buildUpdate(r, SaveMode.ALL_FIELDS,"example_goods",dao);
        System.out.println(update.getSQL());
    }
}

写入RcdSet到Excel

  Foxnic-SQL 使用 ExcelWriter 类写入数据到 Excel 文件。如下代码所示,首先通过 DAO 获得 RcdSet, 再通过 ExcelWriter 的 fillSheet 填充 Excel 的 Sheet 数据。

/**
* 导出 Excel
* */
@Test
public void  exportExcel() {
    // 获得 DAO 对象
    DAO dao = DBInstance.DEFAULT.dao();
    // 获得导出的 Excel 文件
    MavenProject project=new MavenProject(this.getClass());
    File xlsx= FileUtil.resolveByPath(project.getSourceFile(this.getClass()).getParentFile() ,"out-"+System.currentTimeMillis()+".xlsx");
    // 查询数据
    RcdSet rs=dao.query("select * from example_goods");
    // 创建 ExcelWriter 对象
    ExcelWriter writer=new ExcelWriter();
    // 填充指定的 Sheet
    writer.fillSheet(rs,"商品");
    // 保存到文件
    writer.save(xlsx);
}

小结

  本节主要介绍了在 Foxni-SQL 中使用 ExcelWriter 和 ExcelReader 导出和导入 Excel 数据。Foxni-SQL 尽量为开发者提供简洁的方法完成这些操作,当然 ExcelWriter 和 ExcelReader 也具备一些高级用法以备适应复杂的业务场景,这些小伙伴们可自行探索。

相关项目

  https://gitee.com/LeeFJ/foxnic
  https://gitee.com/LeeFJ/foxnic-web
  https://gitee.com/lank/eam
  https://gitee.com/LeeFJ/foxnic-samples

官方文档

  http://foxnicweb.com/docs/doc.html

点赞
收藏
评论区
推荐文章
林末 林末
3年前
python读取excel数据转为json格式
做自动化时需要从excel读取数据;本文实现将excel文件数据读取为json格式,方便自动化调用读取xls文件使用xlrd读取xls文件代码:pythonimportxlrddefreadxls(file):实例化excelbookxlrd.openworkbook(file)下标读取sheetsheetb
Wesley13 Wesley13
3年前
UIPath入门系列三之操作Excel表格
介绍如何使用UIPath操作Excel一、Excel/Workbooks与DataTables的区别Excel/Workbooks是一个excel文件,里面可以存储各种类型的数据,可格式化,布局,合并单元格及多个数据表DataTables只是最简单的电子表格数据类型,只有行和列和可选标题
Wesley13 Wesley13
3年前
java使用POI将数据导出放入Excel
本文主要是将数据库取出的数据按照自定义的行列格式导出到excel中,POI则是实现我们需求所用到的技术。POI介绍使用springboot导入相关依赖获取数据(自行处理)完整代码实例:创建excel,将数据写入excel1.POI介绍要想使用POI对Excel进行操作,我们需要先了
Stella981 Stella981
3年前
ABAP学习(16):ABAP2XLSX,操作excel
ABAP2XLSX   ABAP2XLS是一个操作EXCEL的开源项目,相比较OLE2和DOI方式操作excel更加方便。   ABAP中搜索ZDEMO\_EXCEL\搜索Program可以查看SAP提供的示例程序,实现多种Excel。1.创建excel   Excel类:zcl\_excel类
Stella981 Stella981
3年前
HuTool工具类使用之Excel文档的导入导出
HuTool工具类使用之Excel文档的导入导出前言在日常的工作开发中,Excel的导入和导出是必不可少的,如果自己写相应的导入导出方法,会显得十分繁琐,本文采用Hutool工具类实现的Excel导入导出功能,可以大幅度减少今后开发中Excel的导入导出的相关操作。
Stella981 Stella981
3年前
Excel数据转化为sql脚本
在实际项目开发中,有时会遇到客户让我们把大量Excel数据导入数据库的情况。这时我们就可以通过将Excel数据转化为sql脚本来批量导入数据库。1在数据前插入一列单元格,用来拼写sql语句。 具体写法:"insertintot\_student(id,name,age,class)value("&B2&",'"&C2&"',"&D2&"
Stella981 Stella981
3年前
Python操作Excel
前言:Python操作Excel使用openpyxl模块,python中有好几个与excel相关操作的模块。xlrd库:从excel中读取数据,支持xls、xlsx格式。xlwt库:对excel进行修改操作,不支持对xlsx格式的修改。xlutils库:在xlrd和xlwd中对一个已存在的文件进行修改。openpyxl库:
Stella981 Stella981
3年前
EasyExcel写入百万级数据到多sheet
EasyExcel是什么?快速、简单避免OOM的java处理Excel工具一、项目需求    从mongo库中查询数据,导出到excel文件中。但是动态导出的excel有多少列、列名是什么、有多少sheet页都需要动态获取。所以生成的excel也必须是动态生成,不能通过注解配置对象映射。而且写入的数据量,有可能达到100W级,使用传统的PO
Wesley13 Wesley13
3年前
Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins
本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考整体思路:1、接口自动化用的是Python中unittest框架2、所有的测试数据用例存放Excel表3、封装一套读取和写入的Excel方法4、重写request方法(为了从Excel读取数据后对数据作分析和判断并在测
秋桐 秋桐
1年前
通过Java程序将Excel转换为PDF文档格式
Excel广泛应用于商业、教育等众多领域,具有丰富的数据处理和分析功能,包括计算、图表、排序、筛选、数据透视表等。在处理大型数据内容时,Excel绝对是最佳工具。但如果要将处理好的数据内容进行保存和传输的话,转换为PDF文档格式或许更加可靠。PDF文档的稳定布局可以避免数据内容被随意更改,即使是在多次传输后也能保证数据的准确性。将Excel转换为PDF的工具有很多。这里我将介绍如何通过编程的方法来实现该功能。以Java代码为例,使用到的产品是FreeSpire.XLSforJava(免费版)。下面是程序环境和示例代码。