显示导航

在365bet地区应用程序中下载Excel文件

365bet地区了解如何使用365bet地区和Spreadsheet Builder库下载Excel文件

s塞尔吉奥·德尔阿莫

365bet地区365bet地区版本 3.3.9

训练

365bet地区培训365bet地区由创建并积极维护365bet地区框架的人们开发和交付

入门

365bet地区在本指南中,我们将通过创建一个应用程序来演示365bet地区文件传输功能,该应用程序将下载带有书籍列表的excel文件

您将需要什么

要完成本指南,您将需要以下内容

  • 花些时间在你手上

  • 体面的文本编辑器或IDE

  • 安装了JDK或更高版本JAVA首页适当配置

我们建议您按照下一部分中的说明进行操作,并逐步创建应用。不过,您可以直接转到完成的例子.

要么

然后光盘进入完成您将在下载的克隆项目的根项目中找到的文件夹

编写应用

grails创建应用示例grails完整功能事件geb休眠

我们正在使用天生功能包括天生Gradle WebDriver Binaries插件Geb需要JDK或更高版本

图书

创建波哥

src main groovy示例grails本书groovy
例子进口 常规转换CompileStatic
进口 常规转换EqualsAndHashCode
进口 groovy变换TupleConstructor

静态编译
EqualsAndHashCode
元组构造函数
  {
    伊斯本那么

创建一个可获取几本书的示例服务

grails应用程序服务示例grails BookService groovy
例子进口 常规转换CompileStatic

静态编译
 图书服务 {

    清单<找到所有 ("1491950358", "构建微服务"),
                 ("1680502395", "释放它"),
                 ("0321601912", "持续交付"),
        ]
    }
}

电子表格生成器

将依赖项添加到电子表格生成器

电子表格生成器提供了一种便捷的方式来阅读和创建MS Excel OfficeOpenXML文档XLSX不仅着眼于内容方面,而且着眼于简单的样式

建立gradle
依赖项编译'建造者dsl电子表格建造者poi RC'编译'建设者dsl电子表格建设者groovy RC'
}

Excel创建

将样式配置外部化为实现的类建造者dsl电子表格建造者api样式表接口以最大化代码重用

src main groovy示例grails BookExcelStylesheet groovy
例子进口 建造者dsl电子表格api FontStyle
进口 建造者dsl电子表格建造者api CanDefineStyle
进口 建造者dsl电子表格建造者api样式表
进口 常规转换CompileStatic

静态编译
 BookExcelStylesheet 实施样式表上市 静态的 最后 样式标题"标头"

    覆写
    虚空DeclarationStyles CanDefineStyle可样式化样式样式STYLE HEADER st st f样式FontStyle BOLD

创建一个生成Excel文件的服务

grails应用程序服务示例grails BookExcelService groovy
例子进口 建造者dsl电子表格建造者poi PoiSpreadsheetBuilder
进口 常规转换CompileStatic

静态编译
 BookExcelService {
    上市 静态的 最后 片名"图书"
    上市 静态的 最后 标头ISBN"伊斯本"
    上市 静态的 最后 标题名称"name"
    上市 静态的 最后 EXCEL文件后缀"xlsx"
    上市 静态的 最后 EXCEL文件前缀"图书"
    上市 静态的 最后 EXCEL FILENAME EXCEL FILE PREFIX EXCEL FILE SUFFIX虚空exportExcelFromBooks输出流外出清单<bookList文件文件文件createTempFile EXCEL FILE PREFIX EXCEL FILE SUFIX PoiSpreadsheetBuilder create outs build apply BookExcelStylesheet工作表SHEET NAME s row HEADER ISBN HEADER NAME每个标题单元格值标题样式BookExcelStylesheet STYLE HEADER bookList每个书行单元格书本isbn单元书名文件

控制者

创建一个控制器

grails应用程序控制器示例grails ExcelController groovy
例子进口 grails config配置
进口 grails核心支持365bet地区ConfigurationAware
进口 常规转换CompileStatic

进口 静态的 org springframework http HttpStatus确定

静态编译
 ExcelController 实施365bet地区ConfigurationAware(1)BookService bookService BookExcelService bookExcelServicexlsx Mime类型编码方式覆写
    虚空setConfiguration Config co(1)xlsxMimeType co getProperty'grails mime类型xlsxMimeType',
                ,
                '应用程序vnd openxmlformats officedocument电子表格ml工作表'编码co getProperty'grails转换器编码', , 'UTF')
    }

    定义 指数响应状态OK值(2)响应setHeader"内容配置", "附件文件名${BookExcelService EXCEL FILENAME}" (3)响应contentType"${xlsx Mime类型}字符集${编码方式}" (4)
        输出流outs响应outputStream bookExcelService exportExcelFromBooks outs bookService findAll(5)冲水冲水关闭
1 实行grails核心支持365bet地区ConfigurationAware配置mime类型和编码配置
2 控制器方法可以访问响应对象,它是Servlet API的实例HttpServletResponse
3 内容配置指示应该下载文件
4 设置下载内容类型.
5 写入excel文件以输出流刷新并关闭它

365bet地区默认情况下,从头创建的365bet地区应用程序包含指向该应用程序中注册的每个控制器的链接。我们将测试单击该链接会下载一个Excel文件

家

测验

通常,在许多应用程序中文件传输都未经测试,在本节中,您将看到测试文件下载以及下载的文件内容是否符合我们的预期是多么容易

我们还使用Geb浏览器自动化解决方案

365bet地区我们告诉365bet地区 CLI使用天生当我们在编写应用部分

ils子天生功能包括必要的Geb依赖项

建立gradle
测试编译"org grails出生的插件"测试编译"org seleniumhq selenium selenium远程驱动程序"测试编译"org seleniumhq硒api"测试编译"org seleniumhq硒硒支持"testRuntime"org seleniumhq硒硒铬驱动程序"testRuntime"org seleniumhq selenium selenium firefox驱动程序"

ils子天生功能生成一个src集成测试资源GebConfig groovy文件来为Geb配置不同的环境修改它以配置一些chrome选项来控制下载路径

src集成测试资源GebConfig groovy
进口 org openqa硒铬ChromeDriver
进口 组织机构openqa硒铬ChromeOptions
进口 组织openqa硒firefox FirefoxDriverChromeOptions选项ChromeOptions如果 ( 系统getProperty'下载文件夹'选项setExperimentalOption"偏好", [
            "配置文件默认内容设置弹出窗口":  0, (1)
            "下载默认目录": 系统getProperty'下载文件夹') (2)环境通过gradlew Dgeb env chrome iT运行镀铬驱动器ChromeDriver选项通过gradlew Dgeb env chromeHeadless iT运行chromeHeadless驱动程序选项addArguments'无头')
            ChromeDriver选项通过gradlew Dgeb env firefox iT运行火狐驱动程序火狐浏览器
1 禁用确认弹出窗口
2 配置下载文件夹

Geb使用Page概念模式Page对象模式为我们提供了一种以可重用和可维护的方式对内容建模的常识方法创建Geb页面以封装Excel链接

src集成测试groovy示例grails主页groovy
例子进口 给页面

 主页 延伸静态的在标题'欢迎来到365bet地区' }

    静态的网址'/'

    静态的内容excelLink$('一种', 文本包含'电子表格'), 0) }
    }

    虚空下载Excel excel链接单击

天生功能安装也webdriver binaries Gradle插件一个插件,该插件下载并缓存特定于要在其上运行构建的操作系统的WebDriver二进制文件

建立gradle
buildscript存储库依赖项类路径"com bertramlabs插件资产管道gradle"应用插入:"使用通电工作的webdriver二进制文件"依赖webdriverBinaries chromedriver'2.45'geckodriver'0.23.0'具有类型测试系统属性的任务"吉布环境", 系统getProperty'吉布环境') (1)系统属性"下载文件夹", 系统getProperty'下载文件夹') (2)系统属性"geb构建报告"报告文件"给IntegrationTest")
}
1 通过系统属性吉布环境去测试
2 通过系统属性下载文件夹去测试

创建一个测试以验证Excel文件是否已下载并且内容是否符合我们的期望

src集成测试groovy示例grails下载ExcelSpec groovy
例子进口 建筑商dsl电子表格查询api SpreadsheetCriteria
进口 建筑商dsl电子表格查询api SpreadsheetCriteriaResult
进口 建筑商DSL电子表格查询poi PoiSpreadsheetCriteria
进口 geb spock GebSpec
进口 grails测试mixin集成集成
进口 spock lang忽略
进口 spock util并发PollingConditions

积分
 下载ExcelSpec 延伸GebSpec忽略系统'下载文件夹'系统'吉布环境'] != '' })
    定义 "书籍可以作为excel文件下载"() {
        给定轮询条件条件轮询条件暂停: 5)

        什么时候浏览器到主页然后主页上的浏览器什么时候: '点击excel按钮'
        预期路径系统getProperty'下载文件夹') + "/"BookExcelService EXCEL FILENAME文件输出文件 文件预期的路径浏览器页面主页下载Excel然后: 'excel文件下载'条件最终outputFile存在什么时候: '如果我们搜索具有特定值的行Building Microservices'SpreadsheetCriteria查询PoiSpreadsheetCriteria FACTORY for File outputFile SpreadsheetCriteriaResult结果查询表BookExcelService SHEET NAME行单元格值'构建微服务'
                    }
                }
            }
        }

        然后: '找到一行'结果单元格大小1

        清理outputFile删除

运行测试

gradlew Dgeb env chrome Ddownload文件夹用户sdelamo下载集成测试打开构建报告测试测试索引html

运行应用

要运行该应用程序,请使用gradlew bootRun命令将在端口上启动应用程序

365bet地区帮助365bet地区

OCI赞助了本指南的创建OCI提供了几种365bet地区365bet地区服务:

免费咨询

365bet地区OCI 365bet地区团队365bet地区包括365bet地区联合创始人Jeff Scott Brown和Graeme Rocher检查我们的365bet地区课程并向发展和维护365bet地区的工程师学习

365bet地区Grails OCI团队