显示导航

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

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

s塞尔吉奥·德尔阿莫

365bet地区365bet地区版本 4.0.1

训练

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

入门

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

您将需要什么

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

  • 花些时间在你手上

  • 体面的文本编辑器或IDE

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

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

要么

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

编写应用

grails创建应用示例grails完成

图书

创建波哥

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$电子表格BuilderVersion"编译"建造者dsl电子表格建造者groovy$电子表格BuilderVersion"
}

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地区包含必要的Geb依赖项

建立gradle
测试编译"org grails出生的插件"排除: 'org gebish', 模组: '给小鸡'测试编译"org gebish geb spock$暴动"测试编译"org seleniumhq selenium selenium远程驱动程序$硒版本"测试编译"org seleniumhq硒api$硒版本"测试编译"org seleniumhq硒硒支持$硒版本"testRuntime"org seleniumhq硒硒铬驱动程序$硒版本"testRuntime"org seleniumhq selenium selenium firefox驱动程序$硒版本"testRuntime"org seleniumhq硒safari Safari驱动程序$seleniumSafariDriverVersion"

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

src集成测试资源GebConfig groovy
进口 org openqa硒铬ChromeDriver
进口 组织机构openqa硒铬ChromeOptions
进口 组织openqa硒firefox FirefoxDriver
进口 org openqa硒Firefox Firefox选项
进口 组织openqa硒野生动物园SafariDriver环境您需要在Safari开发中配置允许远程自动化野生动物园的司机SafariDriver通过gradlew Dgeb env chrome iT运行镀铬驱动器ChromeDriver通过gradlew Dgeb env chromeHeadless iT运行chrome无头驱动程序ChromeOptions oChromeOptions或addArguments'无头')
            Chrometriver o通过gradlew Dgeb env firefox运行firefox无头驱动程序FirefoxOptions oFirefox选项或addArguments'无头')
            FirefoxDriver o通过gradlew Dgeb env firefox iT运行火狐驱动程序火狐浏览器
1 禁用确认弹出窗口
2 配置下载文件夹

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

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

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

    静态的网址'/'

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

    虚空下载Excel excel链接单击

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

建立gradle
buildscript存储库依赖项类路径"gradle插件com github erdi webdriver二进制文件webdriver二进制文件gradle插件$webdriverBinariesVersion"应用插入:"与github erdi webdriver二进制文件"依赖webdriverBinaries chromedriver"${chromeDriverVersion}"geckodriver"${geckodriverVersion}"具有类型测试系统属性的任务"吉布环境", 系统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

365bet地区帮助365bet地区

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

免费咨询

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

Grails OCI团队