源码项目分享 相关博客-Java技术分享站

    源码项目分享 myproject jvm123.com 是一个java技术分享站,内容涉及java、jvm、程序开发,单元测试框架Spock教程,测试视频教程,spring框架教程等, 以及服务器搭建、linux、docker等相关技术。

MinIO spring boot starter 1.2.1 自定义Clinet和缓存清理

<!-- wp:paragraph --> <p><code> minio-spring-boot-starter </code>为一个在springboot中引入即可使用的spring boot starter,提供了对minio的基本操作,进行文件的存储获取等。自1.2.1版本之后,可以很容易对其中使用的minio客户端、缓存清理服务根据需要进行自定义。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> minio-spring-boot-starter 提供的主要功能是使用minio服务,对文件进行存储、获取、删除等,而在此过程中需要使用到MinioClient,以及对获取文件时产生的本地缓存进行清理。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>如果需要自定义MinioClient,则只需要自己重新定义<code>MinioClientProvider</code>即可,如下:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>import com.jvm123.minio.service.client.MinioClientProvider; import io.minio.MinioClient; import io.minio.errors.InvalidEndpointException; import io.minio.errors.InvalidPortException; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @SpringBootApplication public class DemoMinioApplication { public static void main(String[] args) { SpringApplication.run(DemoMinioApplication.class, args); } @Bean MinioClientProvider minClient() { return (endpoint, accessKey, secretKey) -> { try { return new MinioClient("http://petdy.cn:9000", "admin", ""); } catch (InvalidEndpointException | InvalidPortException e) { e.printStackTrace(); return null; } }; } }</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>如果需要自定义清理缓存逻辑,需要重新实现接口<code>TempCleanService</code>,如下:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>/** * 清理缓存 * @author yawn http://jvm123.com * 2020/1/18 10:54 */ public interface TempCleanService { void cleanTemp(String tmpDir, Long tmpAliveDuration); }</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>而接口中方法的参数就是配置文件中的值。</p> <!-- /wp:paragraph -->

分类:MinIO服务器搭建源码项目分享
标签:starter文件服务器springbootMinIO文件上传文件存储

2020-03-16 07:37:35.0
MinIO spring boot starter 1.2.1 自定义Clinet和缓存清理  minio-spring-boot-4

MinIO spring boot starter 1.1.0 发布

<!-- wp:heading --> <h2>简介</h2> <!-- /wp:heading --> <!-- wp:list {"ordered":true} --> <ol><li>使用minIO单bucket存储获取删除对象(文件)</li><li>也可以获取对象输入流、直接写入输出流</li><li>支持多个bucket,也兼容v1.0.0的配置默认bucket</li><li>可创建和删除bucket</li></ol> <!-- /wp:list --> <!-- wp:heading --> <h2>使用方法:</h2> <!-- /wp:heading --> <!-- wp:heading {"level":3} --> <h3>依赖</h3> <!-- /wp:heading --> <!-- wp:code --> <pre class="wp-block-code"><code>&lt;dependency> &lt;groupId>com.jvm123&lt;/groupId> &lt;artifactId>minio-spring-boot-starter&lt;/artifactId> &lt;version>1.1.0&lt;/version> &lt;/dependency></code></pre> <!-- /wp:code --> <!-- wp:heading {"level":3} --> <h3>配置</h3> <!-- /wp:heading --> <!-- wp:code --> <pre class="wp-block-code"><code>file: store: minio: endpoint: http://192.168.80.106:9000 bucket: test access-key: admin secret-key: admin123 tmp-dir: ./tmp/ tmp-clean: true tmp-first-clean-time: 2020-1-17 11:45:00 tmp-clean-period: 12960000 tmp-alive-duration: 12960000</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>如果不配置默认bucket,则需要在使用api时指定。存储时指定的bucket如果不存在,则会自动创建。<br>tmp-dir 为api中返回File类型的缓存目录,这个目录会按照FIFO规则定时清理。如果使用返回InputStream的api,则不会有缓存。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>tmp-clean如果设置为false,则后续的tmp相关配置也不会生效。只有在使用getFile api时,才会产生缓存,若确定不使用这个,则可以关闭tmp-clean。</p> <!-- /wp:paragraph --> <!-- wp:heading {"level":3} --> <h3>使用</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>兼容v1.0.0的所有用发,新增的示例如下:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>package com.jvm123.demo; import com.jvm123.minio.service.FileStoreService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; /** * @author yawn http://jvm123.com * 2020/1/15 17:17 */ @RestController public class TestController { @Autowired FileStoreService fileStoreService; @GetMapping("test2") public void test2(HttpServletResponse response) throws IOException { String bucketName = "demo-bucket"; // 创建bucket boolean created = fileStoreService.createBucket(bucketName); // 存储文件 String saved = fileStoreService.save(bucketName, new File("C:\\asd.txt"), "a.txt"); // 删除文件 boolean deleted = fileStoreService.delete(bucketName, "a.txt"); // 获取文件(会产生本地缓存) File file = fileStoreService.getFile(bucketName, "a.txt"); // 获取输入流 InputStream inputStream = fileStoreService.getStream(bucketName, "a.txt"); // 下载 response.addHeader("Content-Disposition","attachment;filename=a.txt"); ServletOutputStream os = response.getOutputStream(); fileStoreService.writeTo(bucketName, "a.txt", os); } }</code></pre> <!-- /wp:code --> <!-- wp:heading --> <h2>change list</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>v1.0.0 常用功能的实现</p> <!-- /wp:paragraph --> <!-- wp:list {"ordered":true} --> <ol><li>实现使用minIO单bucket存储获取对象(文件)的功能</li><li>实现获取对象输入流、写入输出流等功能</li></ol> <!-- /wp:list --> <!-- wp:paragraph --> <p>v1.1.0 常用功能的实现</p> <!-- /wp:paragraph --> <!-- wp:list {"ordered":true} --> <ol><li>支持多个bucket,也兼容v1.0.0的配置默认bucket</li><li>可创建删除bucket</li><li>删除文件</li></ol> <!-- /wp:list -->

分类:springbootjavaMinIO源码项目分享
标签:starterspringbootMinIO文件上传文件存储

2020-01-17 07:22:15.0
MinIO spring boot starter 1.1.0 发布  minio-spring-boot-2

MinIO spring boot starter 1.0.0 发布

<!-- wp:paragraph --> <p>MinIO spring boot starter 是为 minio 在springboot项目中使用而编写的springboot starter,具有一般项目中使用到的文件存储获取功能,计划在后续版本将添加操作minIO的更多功能。</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>功能简介</h2> <!-- /wp:heading --> <!-- wp:list {"ordered":true} --> <ol><li>使用minIO单bucket存储获取对象(文件)</li><li>也可以获取对象输入流、直接写入输出流</li></ol> <!-- /wp:list --> <!-- wp:heading --> <h2>使用方法:</h2> <!-- /wp:heading --> <!-- wp:heading {"level":3} --> <h3>依赖</h3> <!-- /wp:heading --> <!-- wp:code --> <pre class="wp-block-code"><code>&lt;dependency> &lt;groupId>com.jvm123&lt;/groupId> &lt;artifactId>minio-spring-boot-starter&lt;/artifactId> &lt;version>1.0.0&lt;/version> &lt;/dependency></code></pre> <!-- /wp:code --> <!-- wp:heading {"level":3} --> <h3>配置</h3> <!-- /wp:heading --> <!-- wp:preformatted --> <pre class="wp-block-preformatted">file:<br> store:<br> minio:<br> endpoint: http://petdy.cn:9000<br> bucket: test-bucket<br> access-key: admin<br> secret-key: admin<br> tmp-dir: ./tmp/</pre> <!-- /wp:preformatted --> <!-- wp:heading {"level":3} --> <h3>Api调用</h3> <!-- /wp:heading --> <!-- wp:code --> <pre class="wp-block-code"><code>package com.jvm123.demo; import com.jvm123.minio.service.FileStoreService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; /** * @author yawn http://jvm123.com * 2020/1/15 17:17 */ @RestController public class TestController { @Autowired FileStoreService fileStoreService; @GetMapping("get") public void get(HttpServletResponse response) throws IOException { // 存储文件 fileStoreService.save(new File("C:\\asd.txt"), "a.txt"); // 获取文件 File file = fileStoreService.getFile("a.txt"); // 获取输入流 InputStream inputStream = fileStoreService.getStream("a.txt"); // 下载 response.addHeader("Content-Disposition","attachment;filename=a.txt"); ServletOutputStream os = response.getOutputStream(); fileStoreService.download("a.txt", os); } }</code></pre> <!-- /wp:code --> <!-- wp:heading --> <h2>Change list</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>v1.0.0 常用功能的实现</p> <!-- /wp:paragraph --> <!-- wp:list {"ordered":true} --> <ol><li>实现使用minIO单bucket存储获取对象(文件)的功能</li><li>实现获取对象输入流、写入输出流等功能</li></ol> <!-- /wp:list -->

分类:源码项目分享javaspringbootspring
标签:MinIO对象存储springbootbucketstarter文件存储

2020-01-16 02:34:49.0
MinIO spring boot starter 1.0.0 发布  minio-spring-boot

excel-converter-starter 1.2.0 发布,修复单例引起的bug

<!-- wp:paragraph --> <p>excel-converter-starter 是一个提供简洁方法在java系统中导入、导出excel的spring boot starter,目前已发布至版本v1.2.0,各版本修复记录如下:</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>change list</strong>:</p> <!-- /wp:paragraph --> <!-- wp:list --> <ul><li>v1.0<br>基本功能:导入、导出、按模板导出等</li><li>v1.1<br>java对象导出excel时,增加对象子属性字段的支持(java对象子属性的字段也可以导出到excel中了)</li><li>v1.2.0<br>修复spring单例引起的多次数据导出重复显示的问题</li></ul> <!-- /wp:list --> <!-- wp:paragraph --> <p> excel-converter-starter v1.2.0 版本于今天(2019年10月9日)发布,修复了java系统导出excel时,因spring默认单例bean而引起的多次导出数据重复的问题。其他使用方法不变,最少一句代码即可导出/导入java或excel中的数据,是java系统与excel表格数据转换的轻巧的桥梁。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>使用简单至一句代码,如下加入maven依赖之后:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code> &lt;dependency> &lt;groupId>com.jvm123&lt;/groupId> &lt;artifactId>excel-converter-starter&lt;/artifactId> &lt;version>1.2.0&lt;/version> &lt;/dependency></code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p><strong>excel导入成Java中的list使用:</strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>List&lt;Person> peo = exImporter.convert("./企业人员汇总表.xlsx", Person.class);</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p><strong>java中的list导出到excel使用:</strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>exExporter.export(dataList, file);</code></pre> <!-- /wp:code --> <!-- wp:spacer --> <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div> <!-- /wp:spacer -->

分类:源码项目分享javaexcelspringspringboot
标签:springbootspringjava导入excel converterexcel导出导出excel

2019-10-09 21:41:57.0
excel-converter-starter 1.2.0 发布,修复单例引起的bug  excel-converter-3

excel-converter-starter导出excel文件时,数据列的顺序问题

<!-- wp:heading --> <h2>问题描述:</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>在使用 excel-converter-starter 时,注入ExExporter或者ExcelExporter导出数据时,有时导出的excel中,数据列的顺序不是按照配置文件中的顺序。例如有以下配置:</p> <!-- /wp:paragraph --> <!-- wp:preformatted --> <pre class="wp-block-preformatted">excel: converter: props-map: default: sheet-index: 1 name-row-index: 0 comment-row-index: 1 first-data-row-index: 2 last-data-row-index: -1 data-row-num: -1 start-column-index: 0 <strong> name-header-map: id: ID name: 名称 address: 地址 date: 日期</strong> show-name-row: true</pre> <!-- /wp:preformatted --> <!-- wp:paragraph --> <p>数据列分别为id,name,address,date,但是最终导出excel中的列的顺序乱了。</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>分析:</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>由于 <strong>name-header-map</strong> 是LinkedHashMap类型的,以保证最终导出是有序的,所以在推测应该是在读取配置文件时就已经乱序了。 </p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>再测试几次发现:使用application.properties配置文件就会使 nameHeaderMap 乱序,所以,应该是 spring boot 读取 .properties 和 .yml 配置文件的方式不同,导致读取进来的 LinkedHashMap 的顺序错乱。</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>解决方法:</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>1 采用 application.yml配置文件即可</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>2 如果项目原本就采用application.properties配置文件,可以新建一个application-excel.yml 文件,再在 application.properties配置文件 中导入即可,导入 application-excel.yml 配置文件只需要加入以下配置:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>spring.profiles.include=excel</code></pre> <!-- /wp:code -->

分类:源码项目分享springbootjavaexcelspringcloudspring开发笔记日常报错
标签:springbootexcel converter日常报错java导出SpringCloudexcelspringapplication.properties

2019-09-27 23:17:39.0
excel-converter-starter导出excel文件时,数据列的顺序问题  excel-converter-2

纯css回到顶部和回到首页功能,无任何js代码

<!-- wp:paragraph --> <p></p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>使用纯css/html实现回到顶部和回到首页功能,无任何js代码,实现了一个外观不错,鼠标上滚有提示效果的回到顶部和回到首页功能。</strong></p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>源代码如下:</strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>&lt;style type="text/css" rel="stylesheet"> .jvm123-home, .jvm123-top { margin: 5px 0; width: 50px; height: 50px; background-size:100% 100% } .jvm123-home { background-image: url("http://jvm123.com/wp-content/uploads/2019/08/home.jpg"); } .jvm123-top { background-image: url("http://jvm123.com/wp-content/uploads/2019/08/top.jpg"); } .jvm123-home:hover { background-image: url("http://jvm123.com/wp-content/uploads/2019/08/home1.jpg"); } .jvm123-top:hover { background-image: url("http://jvm123.com/wp-content/uploads/2019/08/top1.jpg"); } &lt;/style> &lt;div style="display:block;z-index: 1000;position: fixed;right: 1px;bottom: 10%;width: 50px;opacity: 0.8;margin-right: 5px;"> &lt;a href="http://jvm123.com">&lt;div class="jvm123-home"> &lt;/div>&lt;/a> &lt;a href="#">&lt;div class="jvm123-top"> &lt;/div>&lt;/a> &lt;/div></code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p><strong>将这段代码放在html页面的任何&lt;body&gt;标签内的位置,并将首页的连接地址改为自己网站的页面即可。</strong></p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>效果如下所示:</strong></p> <!-- /wp:paragraph --> <!-- wp:gallery {"ids":[922,925],"columns":2,"imageCrop":false,"align":"center"} --> <ul class="wp-block-gallery aligncenter columns-2"><li class="blocks-gallery-item"><figure><img src="http://jvm123.com/wp-content/uploads/2019/08/Screenshot_2019-08-29-00-00-16-903_com.android.browser-473x1024.png" alt="" data-id="922" data-link="http://jvm123.com/screenshot_2019-08-29-00-00-16-903_com-android-browser" class="wp-image-922"/><figcaption>手机端效果</figcaption></figure></li><li class="blocks-gallery-item"><figure><img src="http://jvm123.com/wp-content/uploads/2019/08/toTop.jpg" alt="" data-id="925" data-link="http://jvm123.com/2019/08/totop.html/totop" class="wp-image-925"/><figcaption>电脑端效果</figcaption></figure></li></ul> <!-- /wp:gallery --> <!-- wp:paragraph {"backgroundColor":"very-light-gray"} --> <p class="has-background has-very-light-gray-background-color"><strong>在线演示:</strong> <a href="http://jvm123.com/p/springcloud-doc/index.html" target="_blank" rel="noreferrer noopener" aria-label="(在新窗口打开)">http://jvm123.com/p/springcloud-doc/index.html</a> </p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code></code></pre> <!-- /wp:code -->

分类:js/jquery前端笔记源码项目分享
标签:回到顶部源码jqueryjscss前端回到顶部回到首页源码分享

2019-08-29 00:20:27.0
纯css回到顶部和回到首页功能,无任何js代码  totop

excel-converter:一行代码实现java中excel数据导入导出

<!-- wp:paragraph --> <p> Excel-converter 是我去年春节之际开发的一个 <strong>java中excel数据导入导出</strong> 的项目。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 当时在某公司担任 java 工程师已经好几年,工作上参与的几个项目都有许多excel导入导出的功能。所以在完成工作之后,我就很想做一个使用简单的工具,能满足大部分项目的这种数据导入导出 excel 的功能。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 在去年元旦假期那会,我就开始准备这个项目,假期结束后,还没有好的方法实现功能。之后由于工作紧张,这个项目偶尔深夜才能提交一点代码。项目暂时被搁浅了......</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 这个项目大部分功能的开发,是在春节假期。当时回到老家,每天还是对着电脑写代码,想着怎样实现才能在使用的时候更加方便......</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 春节假期结束之前,一个初步的版本已经出来了(excel-converter),用起来虽然不难,但是一点也不简洁。于是得益于springboot自动配置和约定大于配置的方向,我开发了 excel-converter-starter,是一个依赖 excel-converter 的项目,也是一个springboot starter项目,这个项目的使用就很简洁了:</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 简洁程度如下:</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 加入 excel-converter-starter 依赖、注入ExExporter后,使用如下一句代码导出excel:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>exExporter.export(dataList, file);</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p> 这样做使用的都是默认的配置。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 而对于导入 Excel 中的数据,只要指定了excel数据列对应的实体属性,使用 excel-converter-starter, 也可以一句代码导入为java的List&lt;T>:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>List&lt;Person> peo = exImporter.convert("./企业人员汇总表.xlsx", Person.class);</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p> 一句代码导入的前提:在excel数据的第一行指定数据列对应的java实体的属性。这一行在源码中称作 <strong>nameRow</strong>,这行的位置也可以自由配置。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 当然,以上一句代码导入导出的,一些相关属性也可以自由配置;对于excel文件的参数也可以使用File实例、String路径、以及输入输出流。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 这段时间,代码一直存在在gitee,已经开源出去了。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 考虑到在实际使用的时候,不止有导出list的要求,也常常会有按照给定的模板,用数据填充模板的要求。所以,在假期结束之后,也抽空做了这样的功能。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 后来,工作上的项目果然要实现这样的导出,同项目组的开发人员都嫌这个任务太麻烦,而我自告奋勇接下了,将自己开源的项目jar包加入,简单配置调用就实现了功能,接下来的两天就上班看乱弹、再刷一 刷动弹...... (老板也没发现)</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 今年7月份,我申请了域名 jvm123.com (灵感来自于 java1234 知识资源分享网),于是,我就以 com.jvm123 的名义将完善后的这两个项目发布到 maven 中央仓库,作为1.0 版本,这样任何人都可以使用了。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 在<strong>中央仓库搜索 jvm123</strong> 就可以看到 excel converter 和 excel converter starter,如下:</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>地址</strong>:<em>https://mvnrepository.com/artifact/com.jvm123</em></p> <!-- /wp:paragraph --> <!-- wp:image {"id":786} --> <figure class="wp-block-image"><img src="http://jvm123.com/wp-content/uploads/2019/08/excel-converter-mvn-1024x465.jpg" alt="" class="wp-image-786"/><figcaption>mvn中央仓库-jvm123.com</figcaption></figure> <!-- /wp:image --> <!-- wp:paragraph --> <p>项目的源码可以访问码云空间: https://gitee.com/yawensilence/excel-converter</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p></p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>以下是 excel converter 和 excel converter starter 两个项目详细使用说名的几篇博文:</strong></p> <!-- /wp:paragraph --> <!-- wp:core-embed/wordpress {"url":"http://jvm123.com/2019/08/excel-converter.html","type":"wp-embed","providerNameSlug":"jvm-123","className":""} --> <figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-jvm-123"><div class="wp-block-embed__wrapper"> http://jvm123.com/2019/08/excel-converter.html </div></figure> <!-- /wp:core-embed/wordpress --> <!-- wp:core-embed/wordpress {"url":"http://jvm123.com/2019/08/excel-shu-ju-dao-ru.html","type":"wp-embed","providerNameSlug":"jvm-123","className":""} --> <figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-jvm-123"><div class="wp-block-embed__wrapper"> http://jvm123.com/2019/08/excel-shu-ju-dao-ru.html </div></figure> <!-- /wp:core-embed/wordpress --> <!-- wp:core-embed/wordpress {"url":"http://jvm123.com/2019/08/java-an-mu-ban-dao.html","type":"wp-embed","providerNameSlug":"jvm-123","className":""} --> <figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-jvm-123"><div class="wp-block-embed__wrapper"> http://jvm123.com/2019/08/java-an-mu-ban-dao.html </div></figure> <!-- /wp:core-embed/wordpress -->

分类:源码项目分享javaexcelspring
标签:开源项目excel converterjava导入excel导出

2019-08-18 14:04:42.0
excel-converter:一行代码实现java中excel数据导入导出  excel-converter-post

vue二维码生成工具的使用

<!-- wp:heading --> <h2>使用说明:</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>二维码生成工具地址: <a href="/qr-code/">http://jvm123.com/qr-code/</a> </p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>此工具纯前端生成二维码,可生成一般的<strong>文本、网址</strong>和<strong>邮件地址</strong>。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>网址二维码在扫描之后,会启动手机浏览器或微信浏览器打开网址;</strong></p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>邮件地址二维码在扫描之后,会启动发邮件的程序。</strong></p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>如果不需要再扫描后自动打开网址,或启动邮箱软件,请使用文本类型生成二维码。</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>源码:</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>使用了<strong>qrcodejs2</strong>依赖库,关键源码如下:</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>完整源码已经在gitee开源,并且采用中国首个开源软件协议: “木兰宽松许可证, 第1版 </strong>”</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>源码地址</strong>: https://gitee.com/yawensilence/vue-qr</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>&lt;template> &lt;div id="qr"> &lt;div > &lt;p> &lt;label> 二维码类型: &lt;input type="radio" value="text" v-model="type"> 文本 &lt;input type="radio" value="web" v-model="type"> 网址 &lt;input type="radio" value="mail" v-model="type"> 邮箱 &lt;/label> &lt;/p> &lt;p> &lt;label> 请输入内容: &lt;input v-model.trim="str"/> &lt;/label> &lt;/p> &lt;p> &lt;label> 二维码边长: &lt;input v-model.trim="len" value="140" type="range" max="600" min="80"/> {{len}}px &lt;/label> &lt;/p> &lt;p style="text-align: right"> &lt;button @click="doit()">确定生成&lt;/button> &lt;/p> &lt;/div> &lt;div id="qrcode">&lt;/div> &lt;!-- 创建一个div,并设置id为qrcode --> &lt;/div> &lt;/template> &lt;script> import QRCode from 'qrcodejs2' // 引入qrcode export default { name : 'qr', data() { return { type: "text", str: "", len: 100 } }, mounted () { this.type = this.getParam("type"); this.str = this.getParam("str"); this.len = this.getParam("len"); if (this.type === "null") { this.type = "txt"; } if (this.str === "null") { this.str = "这是示例文本"; } if (this.len === "null") { this.len = 140; } this.qr(); }, methods: { qr() { var str = this.str; if (this.type === "web" &amp;&amp; !str.startsWith("http")) { str="http://" + str; } if (this.type === "mail" &amp;&amp; !str.startsWith("mailto:")) { str="mailto:" + str; } let qrcode = new QRCode('qrcode', { width: this.len, height: this.len, text: str, // 二维码地址 colorDark : "#000", colorLight : "#FFF", }) }, getParam(name){ return decodeURIComponent((new RegExp('[?|&amp;]'+name+'='+'([^&amp;;]+?)(&amp;|#|;|$)').exec(location.href)||[,""])[1].replace(/\+/g,'%20'))||null; }, doit() { window.location.href='index.html?str='+this.str+"&amp;len="+this.len+"&amp;type="+this.type; } } } &lt;/script></code></pre> <!-- /wp:code -->

分类:vue未分类源码项目分享前端笔记
标签:二维码vueqrcode

2019-08-18 00:45:06.0
vue二维码生成工具的使用  qr-code-post

java按模板导出excel(三)

<!-- wp:heading --> <h2>按模板导出 excel 的过程如下:</h2> <!-- /wp:heading --> <!-- wp:image --> <figure class="wp-block-image"><img src="https://gitee.com/yawensilence/excel-converter/raw/master/img/exc6.png" alt="按模板导出excel步骤图示"/><figcaption>按模板导出excel步骤图示</figcaption></figure> <!-- /wp:image --> <!-- wp:list {"ordered":true} --> <ol><li><strong>制作excel模板</strong>:模板中可以规定单元格的格式、字体等;</li><li><strong>准备数据</strong>:数据对象的属性可以有:数值类、字符串、日期、对象、list;</li><li><strong>配置</strong>:在application.yml中配置相关导出的属性和数据对应的单元格(也可以手动实例化一个 ExcelProperties 对象);</li><li><strong>一行代码导出</strong>:调用ExTplExporter的export方法导出,最后生成如上图的结果。(截图为反面例子,导出的方法调用最好不要换行)</li></ol> <!-- /wp:list --> <!-- wp:paragraph --> <p> 详细配置属性可以参考 <a href="http://jvm123.com/2019/08/excel-converter.html">上一篇文章</a> 中的两个表格说明。 </p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>nameLocationMap</strong> 是一个用来确定数据在excel中位置的map,key为数据实体的属性名、value为期望数据在 excel 单元格中的位置。其中表示位置的 B2、D4 的字母不区分大小写。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>实验功能:</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>如果导出的数据中有List集合类型,并且不能确定list的大小,而list后面的数据该怎样写位置呢?</p> <!-- /wp:paragraph --> <!-- wp:image {"id":531} --> <figure class="wp-block-image"><img src="http://49.235.2.249/wp-content/uploads/2019/08/exc-prop.jpg" alt="" class="wp-image-531"/></figure> <!-- /wp:image --> <!-- wp:paragraph --> <p>可以如图写 D+4,指与 list 的相对位置为 +4,此功能要求list属性的位置配置必须在此之前,并且一张表只允许一个list。</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>使用实例</h2> <!-- /wp:heading --> <!-- wp:heading {"level":3} --> <h3>springboot中使用</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p><strong>0.依赖导入</strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>&lt;dependency> &lt;groupId>com.jvm123&lt;/groupId> &lt;artifactId>excel-converter-stater&lt;/artifactId> &lt;version>1.0&lt;/version> &lt;/dependency></code></pre> <!-- /wp:code --> <!-- wp:block {"ref":563} /--> <!-- wp:paragraph --> <p><strong>1.配置</strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>excel: converter: props-map: grade: sheet-index: 0 date-pattern: yyyy年MM月dd日 name-location-map: name: B2 address: B4 age: D2 date: D15 gradeList: project: b8 grade: c8 totalGrade: project: B13 grade: C13</code></pre> <!-- /wp:code --> <!-- wp:quote --> <blockquote class="wp-block-quote"><p>sheet-index配置了需要导出到的sheet;name-location-map配置了属性与导出位置坐标的对应关系。</p></blockquote> <!-- /wp:quote --> <!-- wp:paragraph --> <p><strong>2.调用导出</strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>@RestController public class DemoExcelConvertController { @Autowired private ExTplExporter exTplExporter; @GetMapping("test5") public void test5(HttpServletResponse response) throws IOException { Person person = createPerson(); response.addHeader("Content-Disposition","attachment;filename=grade.xlsx"); exTplExporter.export("成绩单模板.xlsx", person, response.getOutputStream(), "grade"); } }</code></pre> <!-- /wp:code --> <!-- wp:heading {"level":3} --> <h3>非springboot环境使用</h3> <!-- /wp:heading --> <!-- wp:code --> <pre class="wp-block-code"><code>&lt;dependency> &lt;groupId>com.jvm123&lt;/groupId> &lt;artifactId>excel-converter&lt;/artifactId> &lt;version>1.0&lt;/version> &lt;/dependency></code></pre> <!-- /wp:code --> <!-- wp:block {"ref":563} /--> <!-- wp:list {"ordered":true} --> <ol><li>实例化ExcelTplExporter对象</li><li>设置ExcelProperties</li><li>调用export方法即可按照模板导出excel文件 </li></ol> <!-- /wp:list --> <!-- wp:code --> <pre class="wp-block-code"><code>public class Test3 { public static void main(String[] args) throws FileNotFoundException { Person p = new Person(); p.setAddress("广东广州黄浦区科技企业加速器开元大道"); p.setAge("12"); p.setName("柳成功"); List&lt;Map> gradeList = new ArrayList&lt;>(); Map&lt;String, Object> yuwen = new HashMap&lt;>(); yuwen.put("project", "语文"); yuwen.put("grade", "90"); Map&lt;String, Object> shuxue = new HashMap&lt;>(); shuxue.put("project", "数学"); shuxue.put("grade", "100"); gradeList.add(yuwen); gradeList.add(shuxue); p.setGradeList(gradeList); Map&lt;String, Object> totalGrade = new HashMap&lt;>(); totalGrade.put("project", "总分"); totalGrade.put("grade", "190"); p.setTotalGrade(totalGrade); ExcelProperties properties = new ExcelProperties(); LinkedHashMap&lt;String, Object> nameLocationMap = new LinkedHashMap&lt;>(); nameLocationMap.put("name", "B2"); nameLocationMap.put("age", "D2"); nameLocationMap.put("address", "b4"); LinkedHashMap&lt;String, String> gradeMap = new LinkedHashMap&lt;>(); gradeMap.put("project", "b8"); gradeMap.put("grade", "c8"); nameLocationMap.put("gradeList", gradeMap); LinkedHashMap&lt;String, String> totalGradeMap = new LinkedHashMap&lt;>(); totalGradeMap.put("project", "b13"); totalGradeMap.put("grade", "c13"); nameLocationMap.put("totalGrade", totalGradeMap); properties.setNameLocationMap(nameLocationMap); ExcelTplExporter tplExporter = new ExcelTplExporter(); tplExporter.setProperties(properties); tplExporter.export("成绩单模板.xlsx", p, new FileOutputStream(p.getName() + "同学成绩单.xlsx")); } }</code></pre> <!-- /wp:code -->

分类:源码项目分享javaexcelspring
标签:开源项目excel converterjava导入excel导出

2019-08-05 09:41:51.0
java按模板导出excel(三)  java-an-mu-ban-dao

Excel 导入 java (一)

<!-- wp:paragraph --> <p><strong>Excel-converter</strong> 是一个基于poi的,将excel中的数据读取为java对象,以及将java对象的list导出到excel的工具 。</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>添加依赖</h2> <!-- /wp:heading --> <!-- wp:code --> <pre class="wp-block-code"><code>&lt;dependency> &lt;groupId>com.jvm123&lt;/groupId> &lt;artifactId>excel-converter&lt;/artifactId> &lt;version>1.0&lt;/version> &lt;/dependency></code></pre> <!-- /wp:code --> <!-- wp:block {"ref":563} /--> <!-- wp:heading --> <h2>功能介绍</h2> <!-- /wp:heading --> <!-- wp:list {"ordered":true} --> <ol><li>将excel中的数据读取(导入)为java对象</li><li>将java对象的list导出到excel表格中</li></ol> <!-- /wp:list --> <!-- wp:heading {"level":3} --> <h3>(一) excel 数据导入为 java 系统的list</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>如下图,将左边表格中的数据到入为一个 List&lt;Company&gt; 的实例</p> <!-- /wp:paragraph --> <!-- wp:image --> <figure class="wp-block-image"><img src="https://gitee.com/yawensilence/excel-converter/raw/master/img/exc01.jpg" alt=""/></figure> <!-- /wp:image --> <!-- wp:paragraph --> <p><strong>1 实例化ExcelImporter对象,再调用convert方法就可以读取为java对象或者map的list,如下 :</strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>String filePath = "./企业人员汇总表.xlsx"; ExcelImporter excelImporter = new ExcelImporter(); // 读取为Map List&lt;Map&lt;String, Object>> mapList = excelImporter.convertToMap(filePath); System.out.println(mapList); // 读取为Person List&lt;Person> people = excelImporter.convert(new File(filePath), Person.class); System.out.println(people);</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p> 其中convert方法和convertToMap方法都有以下不同的调用方法,参数为excel文件的路径(filePath)、文件(file)或输入流(inputStream):</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>public List&lt;Map&lt;String, Object>> convertToMap(File file); public List&lt;Map&lt;String, Object>> convertToMap(InputStream inputStream); public List&lt;Map&lt;String, Object>> convertToMap(String filePath); public &lt;T> List&lt;T> convert(File file, Class&lt;T> tClass); public &lt;T> List&lt;T> convert(InputStream inputStream, Class&lt;T> tClass); public &lt;T> List&lt;T> convert(String filePath, Class&lt;T> tClass);</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p><strong>2 如果需要自定义导入的属性,可以通过自定义ExcelProperties对象进行设置:</strong> </p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ExcelProperties properties = new ExcelProperties(); properties.setSheetIndex(1); properties.setCommentRowIndex(0); properties.setNameRowIndex(1); properties.setFirstDataRowIndex(2); properties.setDataRowNum(2); // 如果设置的dataRowNum大于0,则dataRowIndex的值将会被忽略 properties.setLastDataRowIndex(3); importer.setExcelProperties(properties); List&lt;Company> companyList = importer.convert(filePath, Company.class);</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p> 其中导入时可以设置以下属性(所有的index都从0开始算): </p> <!-- /wp:paragraph --> <!-- wp:table --> <table class="wp-block-table"><thead><tr><th>属性名</th><th>默认值</th><th>说明</th></tr></thead><tbody><tr><td>sheetIndex</td><td>0</td><td>要导入的表格(sheet)在excel文件中的索引顺序</td></tr><tr><td>nameRowIndex</td><td>0</td><td>对应java中bean属性名称的行的序号</td></tr><tr><td>commentRowIndex</td><td>1</td><td>对应每一列的说明的行的序号(可无)</td></tr><tr><td>firstDataRowIndex</td><td>2</td><td>要获取的数据开始行的序号</td></tr><tr><td>lastDataRowIndex</td><td>-1</td><td>要获取的数据结束行的序号(可无)</td></tr><tr><td>dataRowNum</td><td>-1</td><td>要获取的数据的条数(可无)</td></tr></tbody></table> <!-- /wp:table --> <!-- wp:paragraph --> <p><strong>3 导入时需要在表格中设置java实体的字段,这行也可以设置隐藏而不展示给用户:</strong> </p> <!-- /wp:paragraph --> <!-- wp:image --> <figure class="wp-block-image"><img src="https://gitee.com/yawensilence/excel-converter/raw/master/img/exc02.jpg" alt=""/></figure> <!-- /wp:image --> <!-- wp:heading {"level":3} --> <h3>(二) 将java的list导出到excel表格中&nbsp; </h3> <!-- /wp:heading --> <!-- wp:image --> <figure class="wp-block-image"><img src="https://gitee.com/yawensilence/excel-converter/raw/master/img/exc03.jpg" alt=""/></figure> <!-- /wp:image --> <!-- wp:paragraph --> <p> <strong>1 实例化ExcelExporter对象,调用export方法即可导出为excel文件,如下: </strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>List&lt;Company> companyList = companys(); ExcelExporter exporter = new ExcelExporter(); exporter.export(companyList, "./companys.xlsx");</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p><strong> 2 如果需要自定义导出的属性,可以通过自定义ExcelProperties对象进行设置:</strong> </p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ExcelProperties properties = new ExcelProperties(); LinkedHashMap&lt;String, String> map = new LinkedHashMap&lt;>(); map.put("id", "ID"); map.put("name", "名称"); map.put("date", "日期"); map.put("money", "金额"); properties.setNameHeaderMap(map); properties.setShowNameRow(true); properties.setDatePattern("yy/MM/dd hh:mm:sss"); exporter.setProperties(properties); exporter.export(companyList, file);</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p> 导出时可以设置以下属性(所有的index都从0开始算): </p> <!-- /wp:paragraph --> <!-- wp:table --> <table class="wp-block-table"><thead><tr><th>属性名</th><th>默认值</th><th>说明</th></tr></thead><tbody><tr><td>showNameRow</td><td>false</td><td>导出是否显示nameRow</td></tr><tr><td>nameRowIndex</td><td>0</td><td>对应java实体属性名的行(nameRow)的序号</td></tr><tr><td>commentRowIndex</td><td>1</td><td>对应每一列的说明的行的序号(可无)</td></tr><tr><td>datePattern</td><td>m/d/yy h:mm:ss</td><td>导出日期类型的格式</td></tr><tr><td>columnWidth</td><td>20</td><td>导出的表格中单元格的宽度</td></tr><tr><td>nameHeaderMap</td><td>null</td><td>导出时java实体属性名的顺序及说明的对应关系(可无), 其中键名为java实体的属性名</td></tr></tbody></table> <!-- /wp:table --> <!-- wp:heading --> <h2>springBoot 中使用</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>在springboot中使用 请参考文章 <a href="/2019/08/excel-shu-ju-dao-ru/">另一篇文章</a> 的介绍。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p></p> <!-- /wp:paragraph -->

分类:源码项目分享javaexcelspring
标签:开源项目excel converterjava导入excel导出

2019-08-04 09:24:43.0
Excel 导入 java (一)  excel-converter

excel数据导入到java(二)

<!-- wp:heading --> <h2>介绍</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p> <strong><a href="/2019/08/excel-converter/">excel-converter</a></strong> 是一个将java对象的list与excel数据相互转化的项目,可以把Excel中的数据导入java的系统中,以及把系统业务数据导出为Excel表格。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 而 <strong>excel-converter-starter</strong> 是直接用在 springboot 项目中的 excel导入导出的项目,项目添加这个依赖之后,可以用一行代码实现 excel 在 java 系统中的导入导出。</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>应用场景</h2> <!-- /wp:heading --> <!-- wp:list {"ordered":true} --> <ol><li>某系统上线初期,需要批量导入用户以及一些基础数据;</li><li>用户在某系统逐个填写业务信息太慢,要求开发一个从excel导入的功能;</li><li>用户需要将系统的业务信息导出成excel进行打印或作为附件发送给其他人。</li></ol> <!-- /wp:list --> <!-- wp:heading --> <h2>加入依赖</h2> <!-- /wp:heading --> <!-- wp:code --> <pre class="wp-block-code"><code> &lt;dependency> &lt;groupId>com.jvm123&lt;/groupId> &lt;artifactId>excel-converter-starter&lt;/artifactId> &lt;version>1.0&lt;/version> &lt;/dependency></code></pre> <!-- /wp:code --> <!-- wp:block {"ref":563} /--> <!-- wp:heading {"level":3} --> <h3>导入步骤:</h3> <!-- /wp:heading --> <!-- wp:list {"ordered":true} --> <ol><li>将java对象的属性名称(字段名 nameRow)写在Excel数据的第二(index为 1)行;</li><li>调用如下一行代码,即可准确导入为java对象的list。 </li></ol> <!-- /wp:list --> <!-- wp:code --> <pre class="wp-block-code"><code>// 将企业人员汇总表中的数据导入为 Person 类型的 List List&lt;Person> peo = exImporter.convert("./企业人员汇总表.xlsx", Person.class);</code></pre> <!-- /wp:code --> <!-- wp:image --> <figure class="wp-block-image"><img src="https://gitee.com/yawensilence/excel-converter/raw/master/img/exc01.jpg" alt=""/><figcaption>第二行为nameRow,对应右边java实体的属性</figcaption></figure> <!-- /wp:image --> <!-- wp:heading {"level":3} --> <h3>导出步骤:</h3> <!-- /wp:heading --> <!-- wp:list {"ordered":true} --> <ol><li> 若无额外配置,可按照java对象的属性将一个 list 导出为 excel;</li><li>若配置了属性对应的表头,即可在 excel 中显示表头信息。</li></ol> <!-- /wp:list --> <!-- wp:code --> <pre class="wp-block-code"><code> // 将 personList 导出到 excel 表格 exExporter.export(personList, "./export.xlsx");</code></pre> <!-- /wp:code --> <!-- wp:image --> <figure class="wp-block-image"><img src="https://gitee.com/yawensilence/excel-converter/raw/master/img/exc03.jpg" alt=""/><figcaption>第二行为额外配置的表头信息,第一行的nameRow也可以配置不显示</figcaption></figure> <!-- /wp:image --> <!-- wp:paragraph --> <p>如果不使用默认的配置属性,也可以自定义,详细配置属性可以参考 <a href="/2019/08/excel-converter/">上一篇文章</a> 中的两个表格。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>配置方法在下面介绍了 <strong>application.yml</strong> 中的配置, <strong>application.properties</strong> 的配置类似。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>java一行代码调用方式在本文末尾介绍了,有多种调用方式。</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>使用示例(springboot 中)</h2> <!-- /wp:heading --> <!-- wp:heading {"level":3} --> <h3>1 导入依赖</h3> <!-- /wp:heading --> <!-- wp:code --> <pre class="wp-block-code"><code>&lt;dependency> &lt;groupId>com.jvm123&lt;/groupId> &lt;artifactId>excel-converter-starter&lt;/artifactId> &lt;version>1.0.&lt;/version> &lt;/dependency></code></pre> <!-- /wp:code --> <!-- wp:block {"ref":563} /--> <!-- wp:heading {"level":3} --> <h3>2 使用步骤</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p><strong>1. 将ExImporter或ExExporter注入使用即可 </strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>@RestController public class DemoExcelConvertController { @Autowired private ExImporter exImporter; @Autowired private ExExporter exExporter; @GetMapping("test") public List&lt;Person> person() { // 1. 将excel表格的数据导入java List&lt;Person> peo = exImporter.convert("./企业人员汇总表.xlsx", Person.class); System.out.println(peo); return peo; } @GetMapping("test3") public void test3(HttpServletResponse response) throws IOException { // 1. 构造java数据 Company c = new Company(); c.setAddress("address"); c.setAmount(0.1245D); c.setDate(new Date()); c.setMoney(0.23123); c.setName("yawn"); c.setId(12); // 2. 将java数据导出为excel表格 exExporter.export(Arrays.asList(c, c, c), "./export.xlsx"); // 3. 将java数据导出为excel表格并下载 response.addHeader("Content-Disposition", "attachment;filename=export.xlsx"); exExporter.export(Arrays.asList(c, c, c), response.getOutputStream()); } }</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>2. <strong>如需要设置导入或导出的属性,可在application.yml文件中配置,如下: </strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>excel: converter: props-map: default: name-row-index: 0 comment-row-index: 1 first-data-row-index: 2 name-header-map: id: ID name: 名称 address: 地址 date: 日期 show-name-row: true date-pattern: yyyy-MM-dd hh:mm:ss company: sheet-index: 1 name-row-index: 1 comment-row-index: 0 first-data-row-index: 2 last-data-row-index: -1 data-row-num: -1 start-column-index: 0</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p> 此配置中包含了两个属性实例,名称分别为 default 和 company, 导入或导出时若想使用某个配置实例,只需要将名称传入调用方法的 propsName 参数即可。若不传这个参数,则默认为 default。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p> 以上配置代码重写了"default"配置,并添加了新的配置"company",使用这两个配置的属性进行导入或导出时,示例如下: </p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>@RestController public class DemoExcelConvertController { @Autowired private ExImporter exImporter; @Autowired private ExExporter exExporter; @GetMapping("test2") public List&lt;Company> test2() { // 根据company配置导出到excel List&lt;Company> companyList = exImporter.convert("./企业人员汇总表.xlsx", "company", Company.class); System.out.println(companyList); return companyList; } @GetMapping("test4") public void test3(HttpServletResponse response) throws IOException { Company c = new Company(); c.setAddress("address"); c.setAmount(0.1245D); c.setDate(new Date()); c.setMoney(0.23123); c.setName("yawn"); c.setId(12); // 根据重写的default配置导出 exExporter.export(Arrays.asList(c, c, c), "./export.xlsx"); response.addHeader("Content-Disposition","attachment;filename=export.xlsx"); exExporter.export(Arrays.asList(c, c, c), response.getOutputStream(), "company"); } } </code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p><strong>3. ExImporter导入调用的方法有: </strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>public &lt;T> List&lt;T> convert(String filePath, String propsName, Class&lt;T> tClazz); public &lt;T> List&lt;T> convert(File file, String propsName, Class&lt;T> tClazz); public &lt;T> List&lt;T> convert(InputStream is, String propsName, Class&lt;T> tClazz); public &lt;T> List&lt;T> convert(String filePath, Class&lt;T> tClazz); public &lt;T> List&lt;T> convert(File file, Class&lt;T> tClazz); public &lt;T> List&lt;T> convert(InputStream is, Class&lt;T> tClazz);</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p> 其中propsName为要使用的yml文件中配置的转换属性的名称 </p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>4.ExExporter导出调用的方法有:</strong></p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>public &lt;T> void export(List&lt;T> beanList, String pathFile); public &lt;T> void export(List&lt;T> beanList, File file); public &lt;T> void export(List&lt;T> beanList, OutputStream os); public &lt;T> void export(List&lt;T> beanList, String pathFile, String propsName); public &lt;T> void export(List&lt;T> beanList, File file, String propsName); public &lt;T> void export(List&lt;T> beanList, OutputStream os, String propsName);</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>注意: 上述方法并不能导出Map,若需要导出Map类型的List,需要使用exportMapList()方法,参数和调用方法与上面的类似。</p> <!-- /wp:paragraph -->

分类:源码项目分享javaexcelspring
标签:开源项目excel converterjava导入excel导出

2019-08-04 16:01:48.0
excel数据导入到java(二)  excel-shu-ju-dao-ru