首页 > 其他分享 >导出记录xls_or_csv文件

导出记录xls_or_csv文件

时间:2024-07-13 15:54:35浏览次数:19  
标签:文件 csv 账号 数据 导出 权限 xls

文章目录

前言

这是一个提供后台数据导出的方案。

在我们业务场景的时候,需要对于一些订单数据或者操作记录等中台展示的数据导出给到业务。

主要的话可以有这么几种方法:

  1. 通过GET方法使用流的方式导出到前端
  2. 通过OSS存储文件,给出文件路径提供下载。OSS也可以换成腾讯的COS,同理。

主要的流程就是,

  1. 组装数据
  2. 创建文件(excel表格数据(xls) or 纯文本形式存储表格数据(csv))。
  3. 导出数据。

操作

文件流式

​ TIPS: 通过设定get请求,在入参设定给定HttpServletResponse

1. 设定请求

​ 文件流式的导出需要将流添加到响应体中,POST请求笔者目前无法拿出响应体,所以需要的是设定GET请求。

image-20240123103108549

2. 组装数据

​ 通过请求携带的参数通过查询接口获取到集合数据。通常的场景都是分页查询的中台接口,所以在获取数据的时候记得分页参数的设定,

3. 创建文件导出数据
Excel文件
POI

​ poi是直接设定工作簿,sheet页,然后添加边框和数据等方式去添加成xls文件。然后加到响应里面。

image-20240123104242856

Easy Excel

​ Easy Excel 的所用代码量会更少,主要是通过对于数据定义成类,通过注解去定义行字段定义。然后写进响应里面。

image-20240123104748788

​ 导出方法:

image-20240123104439245

​ 如果想要导出到本地目录的话可以指定文件流地址。

image-20240123111421321

​ 效果:

image-20240123111904599

纯文本格式数据

​ csv:格式的表格主要是需要通过设定每行一个特定名,与数据类一一对应上,然后去生成文件。如果给定的行名在数据类里面找不到,那么这一行会为空。

这个方法会没有表头,如果想要设定表头,可以使数据类全部属性都为String,然后再数据集合最前面手动添加一行表头数据。

csv

image-20240123160823715

​ 效果:

image-20240123160908847

B列式因为aaa 在数据类里面找不到,数据类是userPhone,所以没有。想同才会导出。

image-20240123161134289

导出方法:

image-20240123161202386

Tips:

​ 同理,如果想要把csv文件以流的方式给出去,可以把csvMapper.writeValuesfile 替换成ServletOutputStream

4. OSS

image-20240123161831187

image-20240123161930287

创建桶

image-20240123162233419

看到这样的提示说明创建成功。

image-20240123162256363

aaa.csv文件上传的OSS服务的xxx目录下面,指定好我们新建立的这个桶的Endpointbucketpath等就可以存储进去。但是需要我们去配置秘钥。

endpoint

在这: 进入到桶的概述,然后查看访问端口那

image-20240123165849879

path

可以自己定义,不存在的话会自动生成。

秘钥

然后就是拿accessKeyIdaccessKeySecret。云账号 AccessKey 是您访问阿里云 API 的密钥,具有账户的完全权限。这个秘钥相当于就是你的账号的访问密码,有了这个就可以操作你的阿里云账号了。但是对于我们的一个OSS服务权限不可能说给他主账号的使用权限的,这样风险太大了,所以可以创建子账号给定权限给子账号,这样子就可以规避一些危险情况。

主账号

右上角的AccessKey管理

image-20240123170555039

image-20240123172419908

子账号

右上角的访问控制管理

image-20240123172524827

创建一个用户

image-20240123172746474

然后添加一个用户组,给用户绑定该用户组。

image-20240123172856732

给这个用户组添加权限

image-20240123173132148

选中权限添加

image-20240123173219729

然后这个用户组所有的用户就有了添加的这个权限了。

获取这个子账户的秘钥就可以去使用了。

image-20240123173453901

上传方法

image-20240123164105107

拿到url之后,浏览器访问改地址下载。

image-20240123163704237

效果

image-20240123164148313

配置权限

配置访问权限可以直接通过url进行下载,不用权限校验

image-20240123183955069

url是这样子

image-20240123184019878

最后

  1. 返回的url给到前端给到用户点击下载这个可能会有危险数据提示,需要点好多确认才能下载到,如果提供文件流直接放到响应体里面的话就可以直接去下载。
  2. 响应体类型的导出只能用GET请求,这样可以获取到HttpServletResponse,然后去拿到ServletOutputStream

OSS需要引入依赖

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.10.2</version>
</dependency>

CSV需要引入依赖

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-csv</artifactId>
    <version>2.15.2</version>
</dependency>

EasyExcel需要引入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.1.1</version>
</dependency>

POI需要引入依赖

<!--xls-->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>
<!--xlsx-->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
</dependency>

POI的也可以使用EasyExcel的包。

标签:文件,csv,账号,数据,导出,权限,xls
From: https://blog.csdn.net/CSDN_JAVA_CC/article/details/140401234

相关文章

  • 生成带logo二维码+批量压缩导出
    importcom.google.zxing.BarcodeFormat;importcom.google.zxing.EncodeHintType;importcom.google.zxing.MultiFormatWriter;importcom.google.zxing.common.BitMatrix;importcom.google.zxing.qrcode.decoder.ErrorCorrectionLevel;importjavax.imageio.ImageIO;......
  • pandas导出excel
    工具类cvsutil.py#!/usr/bin/envpython#-*-coding:utf-8-*-importcsvimportcodecsimportioclassUTF8Recoder:"""IteratorthatreadsanencodedstreamandreencodestheinputtoUTF-8"""def__init_......
  • POI导出案例
    /** *POI方式导出 *@paramlist数据 *@paramexportFields绑定列数组,0:表头,1:数据key *@paramresponse */ publicstaticvoidexportExcel(Listlist,String[]exportFields,HttpServletResponseresponse){ Workbookwb=newXSSFWorkbook(); /......
  • java导出PDF文件
    我们需要将生成的PDF文件直接导出到浏览器而不是保存到本地,需要对HttpServletResponse进行配置,将PDF写入到响应流中。以下是可以将PDF导出到浏览器进行下载:我们首先先编写PDF工具类:packagecom.scenic.util;importcom.itextpdf.text.*;importcom.itextpdf.text.pdf.*;im......
  • 在 PowerShell 中,你可以使用一些命令来管理打印机驱动的导入和导出操作。通过这些 Pow
    更高级的PowerShell自动化打印机迁移,可以考虑以下步骤和技术:自动化打印机迁移流程批量导出和导入打印机配置使用PowerShell脚本批量导出和导入多个打印机的配置。可以结合循环和数组来处理多个打印机。powershellCopyCode#批量导出打印机配置$printers=Get-Printe......
  • 25、Django-生成csv文件
    python提供了内建库-csv、可以直接通过改库操作csv文件案例如下:写入csv文件importcsvwithopen('eggs.csv','w',newline='')ascsvfile:write=csv.writer(csvfile)write.writerow(['a','b','c']) #csv文件下载在网站中......
  • 【20240709】海量图片导出需求,shell脚本
     [root@localhostimages]#catjunshuv3.sh#!/bin/bash#确保脚本在~/images目录下运行if["$(pwd)"!="$HOME/images"];thencd~/imagesfi#创建目标目录junshu,如果不存在则创建mkdir-pjunshu#获取CSV文件中的总行数,用于进度条total_lines=$(wc-l......
  • csv工具类
    packagecom.cccp.utils.tool;importorg.springframework.util.CollectionUtils;importjavax.servlet.http.HttpServletResponse;importjava.io.BufferedWriter;importjava.io.IOException;importjava.io.OutputStreamWriter;importjava.lang.reflect.Field;im......
  • Oracle数据库使用expdp/impdp导出导入数据
    背景:正式环境数据同步到测试环境,数据库名:MYDB,正式、用户:MYUSER(必须拥有SYS权限)。1、正式环境备份数据库(1)正式服务器上,cmd输入sqlplus,使用MYUSER账户登录(2)创建一个自定义的目录,用于存放导出的数据createdirectoryDATA_OUT_FILEas'E:\app\Administrator\admin\MYDB\my_dir\'......
  • oracle数据库导出数据时密码中存在特殊符号的情况处理
    oracle数据库导出指定的表数据,直接在windows的cmd命令行执行如下命令:expwz9199/""“wzz@123"”"@172.17.34.40:1521/orclfile=E:\temp\exp.dmptables=(T_User)命令详细说明:exp代表我们要进行导出操作;wz9199是用户名;wzz@123是密码;在密码两边拼接的三个双引号是为了适配密码中有......