精华内容
下载资源
问答
  • 导出文件会自动保存在哪
    万次阅读
    2017-11-29 19:42:02

    将数据导出excel文件变成科学计数法问题:

        分析

        用程序导出的csv文件,当字段中有比较长的数字字段存在时,在用excel软件查看csv文件时就会变成科学技术法的表现形式。
        其实这个问题跟用什么语言导出csv文件没有关系。Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法;如果数字大于15位,它不仅用于科学技术法表示,还会只保留高15位,其他位都变0。


        解决方式(只要把数字字段后面加上显示上看不见的字符即可,字符串结尾加上制表符"\t")

    比如:php 程序可以这样判断,注意一定是"\t",不是'\t'.
    is_numeric($exporVal) ? $exporVal . "\t" : $exporVal;


    更多相关内容
  • 用Java编写项目时,常常遇到文件下载或导出excel、word等文档功能。实现该功能时常常遇到输出路径如何设置的问题。 问题:当固定输出路径后,若客户端没有该路径怎么办?代码如下: // 以导出一个excel文件为例 ...

    在用Java编写项目时,常常遇到文件下载或导出excel、word等文档功能。在实现该功能时常常遇到输出路径如何设置的问题。

    问题:当固定输出路径后,若客户端没有该路径怎么办?代码如下:

    // 以导出一个excel文件为例
    HSSFWorkbook workbook = new HSSFWorkbook();
    String outputUrl = "E:/example.xls";
    //导出(输出)Excel文件(指定导出路径)
    try {
        FileOutputStream fileOutputStream = new FileOutputStream(outputUrl);
        workbook.write(fileOutputStream);
        fileOutputStream.flush();
        fileOutputStream.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    该种情况固定了保存位置,若客户端不知道存储路径或缺少对应的路径,将会影响功能使用。同时该种设置方式交互性比较差。

    【解决方式】——导出文件自定义保存位置

    如何设置文件响应给客户端时,浏览器会自动弹出弹框告诉用户文件(附件)保存到哪里?以何种方式打开?
    弹出保存框——代码如下:

    
    // 以导出一个excel文件为例
    HSSFWorkbook workbook = new HSSFWorkbook();
    //导出(输出)Excel文件(自定义导出路径)
    try {
        // 取得输出流
        OutputStream outputStream = response.getOutputStream();
        response.reset();// 清空输出流
        // 设置输出文件头
        response.setHeader("Content-disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
        // 设置输出类型
        response.setContentType("application/vnd.ms-excel");
        // 将数据写入输出流
        workbook.write(outputStream);
        outputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    Excel在页面内打开——代码如下:

    
    // 以导出一个excel文件为例
    HSSFWorkbook workbook = new HSSFWorkbook();
    //导出(输出)Excel文件(自定义导出路径)
    try {
        // 取得输出流
        OutputStream outputStream = response.getOutputStream();
        response.reset();// 清空输出流
        // 设置输出文件头
        response.setHeader("Content-disposition", "inline; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
        // 设置输出类型
        response.setContentType("application/vnd.ms-excel");
        // 将数据写入输出流
        workbook.write(outputStream);
        outputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    【注意】该方法不能通过ajax进行请求,否则不会弹出存储框

    【讲解】——Content-Disposition
    header中Content-Disposition的作用与使用方法
    Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。
    Content-Disposition 响应头指示回复的内容浏览器该以何种形式展示,是 以内联的形式(即网页或者页面的一部分),还是 以附件的形式下载并保存(弹出文件下载对话框)到本地并且它的文件名框自动填充headers指定的文件名。

    • Content-disposition属性有两种类型:
      • inline:将文件内容直接显示在页面
      • attachment:弹出对话框让用户下载具体例子(自定义附件存储位置)

    服务器向浏览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等。如果需要提示用户保存,就要利用Content-Disposition进行处理,关键在于一定要加上attachment

    【讲解】——Content-type
    MediaType,即Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。
    用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。

    文件扩展名与 Content-type 的对应关系,参见 http://tool.oschina.net/commons


    参考资料:
    https://www.jianshu.com/p/d4a85d025768 (下载文件中文乱码)
    https://www.jianshu.com/p/01d61e18fbe9 (Content-Type(内容类型)详解)
    https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Dispositio (Content-Disposition更多用法)
    https://www.cnblogs.com/wq-9/articles/12165056.html

    展开全文
  • photoshop按组导出jpg图片,导出位置为psd文件所在文件夹,并按组名自动命名。
  • 现在将WINCC归档的数据导出到...图片上标注的是该导出时需要点击的图标问题补充:我按照第一个回答者的做法,可是不知道自动导出的数据保存到什么地方了,按照手动保存的路径去找,也是没找到图片说明:最佳答案脚本:...

    现在将WINCC归档的数据导出到CSV文件中,需要手动点击导出图标,如何实现自动定时导出?需要在全局动作中编写怎么样的代码?图片上标注的是该导出时需要点击的图标

    问题补充:

    我按照第一个回答者的做法,可是不知道自动导出的数据保存到什么地方了,按照手动保存的路径去找,也是没找到

    图片说明:

    203afeec6741c8051705ee92418efdd1.png

    最佳答案

    脚本:

    Dim objOnlineTable

    Set objOnlineTable =ScreenItems("table") ”设置成表格控件

    objOnlineTable.ExportFilename = "aaa" ”设置文件名

    objOnlineTable.ExportDirectoryname = "d:\" ”设置路径

    objOnlineTable.Export() ”导出

    如果控件属性的导出-》显示对话框没有勾去(图1),会自动弹出一个导出的对话框(图2)

    路径和文件名也可以通过导出属性里面设置

    图片说明:

    203afeec6741c8051705ee92418efdd1.png  

    203afeec6741c8051705ee92418efdd1.png

    提问者对于答案的评价:

    谢谢

    专家置评

    已阅,最佳答案正确。

    相关

    原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc155498.html

    展开全文
  • 前端下载文件/导出文件

    千次阅读 2022-01-21 15:43:41
    前端h5开发过程中经常遇到下载文件或导出文件的需求,有时候接口响应慢或者出于优化交互的目的需要前端自定义处理文件下载。 下面由浅入深分享一些常用的处理方法。 一、window.location.href 这也是最简单的解决...

    前端h5开发过程中会经常遇到下载文件或导出文件的需求,有时候接口响应慢或者出于优化交互的目的需要前端自定义处理文件下载。

    下面由浅入深分享一些常用的处理方法。

    一、window.location.href

    这也是最简单的解决方式,

    window.location.href = url
    
    • url即文件或接口的地址
    • 如需要额外参数,通过url后问号拼接参数,后端get请求方式接收。

    缺陷:

    • 直接访问可能会覆盖当前页面地址,影响用户体验
    • 图片等url资源会表现为预览而非下载

    二、window.open

    window.open(url, '_blank')
    
    • url即文件或接口的地址
    • 如需要额外参数,通过url后问号拼接参数,后端get请求方式接收。
    • _blank表示新开标签页打开,防止覆盖当前页面地址。

    缺陷:

    • 虽然避免了覆盖当前网址,但也需要新开标签页打开链接,用户体验上也不完美
    • 图片等url资源会表现为预览而非下载

    三、动态a标签

    // 封装
    function downloadFile (url, name) {
      url = url || ''
      name = name || ''
      let ele = document.createElement('a')
      ele.target = '_blank'
      ele.href = url
      ele.download = name
      ele.click()
      ele = null
    }
    
    // 调用
    downloadFile(url)
    
    • url即文件或接口的地址
    • 如需要额外参数,通过url后问号拼接参数,后端get请求方式接收
    • a标签的download表明链接的资源将被下载,加了这个属性告诉浏览器以弹窗提示下载保存文件。
    • 服务端需要配置url资源的响应头Content-disposition值为attachment,浏览器识别会调用下载弹窗,进一步配置filename值即下载的默认文件名。
    • name参数是前端自定义的下载文件名,带后缀,给download属性赋值的,仅资源响应头未配置filename时生效,一般后端配置好了的情况下可不传。

    缺陷:

    • a标签的download属性只在访问同源地址资源时有效,跨域情况下就和上述window.open表现一致了。
    • url资源或接口响应头配置了filename时,前端无法自定义下载文件名。
    • 前端需要自定义展示下载进度条需求时无法支持。

    四、ajax请求

    上述动态创建a标签的方式在一些特殊场景下表现不够。

    • 例如:跨域的图片、视频、pdf等资源在浏览器下访问默认是预览而非下载。

    解决方式就是通过ajax请求来处理。

    1、数据传输形式

    • 如果是图片等带文件后缀名的资源,可以直接使用;如果是后端接口形式,需要接口返回文件流形式的数据。
      // java
      InputStream fis = new BufferedInputStream(new FileInputStream(file))
      
    • 前端请求接口,并以blob形式接收数据
      // js
      xhr.responseType = 'blob'
      
      blob 是 js 里表示二进制文件的对象。

    2、创建xhr请求

    function downloadFromApi (url) {
       const xhr = new XMLHttpRequest()
       xhr.open('get', url)
       xhr.responseType = 'blob'
       xhr.onload = e => {
         if (xhr.status === 200) {
           const response = xhr.response
           // 在这里获取到接口响应的数据
           console.log(response)
         }
       }
       xhr.send(null)
     })
    }
    
    • url即资源或接口地址
    • 如需要额外参数:
      • 一种是通过url后问号拼接参数传输,请求方法用get,一般下载文件用这种。
      • 一种是通过请求体传输,xhr.send(data),请求方法用post,一般上传文件用这种,当然你两种方式一起用也行。

    3、封装promise

    封装成promise形式,便于异步处理,在接口响应慢或文件较大下载慢的时候给出加载中提示。

    // 封装
    function downloadFromApi (url) {
      return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest()
        xhr.open('get', url)
        xhr.responseType = 'blob'
        xhr.onload = e => {
          if (xhr.status === 200) {
            const response = xhr.response
            resolve(response)
          } else {
            reject(new Error(`${xhr.status}:请求失败`))
          }
        }
        xhr.send(null)
      })
      xhr.error = err => {
        reject(err)
      }
    }
    
    // 调用(以 vue + element 示例)
    const message = this.$message('加载中...')
    downloadFromApi(url).then(res => {
      message.close()
    })
    

    4、获取文件名

    文件名建议服务端配置,前端获取。

    • 服务端在响应头 Content-disposition 字段配置文件名,例如:
      Content-disposition: attachment;filename=test.xlsx
    • 前端获取响应头,字符串截取:
      const dispoition = xhr.getResponseHeader('Content-Disposition') || ''
      const nameStr = dispoition.split(';')[1] || ''
      const fileName = decodeURIComponent(nameStr.split('=')[1] || '')
      

    前端自定义文件名也可以,需要带文件后缀名。

    5、blob文件下载

    前端以blob形式获取数据后下载下来。

    const response = xhr.response
    
    if (window.navigator.msSaveOrOpenBlob) {
      // 兼容处理,ie下的blob下载
      window.navigator.msSaveOrOpenBlob(response, fileName)
    } else {
      // 常规浏览器,blob下载处理
      const href = URL.createObjectURL(response)
      let ele = document.createElement('a')
      ele.target = '_blank'
      ele.href = href
      ele.download = fileName
      ele.click()
      ele = null
      URL.revokeObjectURL(href)
    }
    
    • 前端获取到的blob数据会临时存储在本地内存,然后读取blob对象生成本地url映射,然后通过动态创建a标签调用浏览器下载。
    • fileName 即上述获取的接口定义的文件名。

    6、下载进度

    文件比较大时从接口获取完所有数据会有一个过程,通过a标签直接访问接口地址时浏览器会自动处理下载进度,而通过ajax请求的只能自行处理。

    • 服务端需要配置响应头的Content-Length,值为文件大小(未配置的话会在文件传输完成后才弹窗提示下载,响应感知太慢)。
    • 前端监听xhr对象的progress事件:
    xhr.onprogress = e => {
      if (e.lengthComputable) {
        const percentComplete = e.loaded / e.total
        // 打印当前已完成的进度比例
        console.log(percentComplete)
      }
    }
    
    • onprogress 是在 xhr 完成之前周期性调用的函数。
    • lengthComputable 表示所关联的资源是否具有可以计算的长度。

    7、完整代码

    /**
     * @description: ajax下载/导出文件
     * @param {string} url 资源或接口地址,可携带参数
     * @param {function} progressCallback 选填,前端自定义的下载进度回调
     */
    function downloadFromApi (url, progressCallback) {
      return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest()
        xhr.open('get', url)
        xhr.responseType = 'blob'
        xhr.onload = e => {
          if (xhr.status === 200) {
            const response = xhr.response
            resolve(response)
    
            const dispoition = xhr.getResponseHeader('Content-Disposition') || ''
            const nameStr = dispoition.split(';')[1] || ''
            const fileName = decodeURIComponent(nameStr.split('=')[1] || '')
    
            if (window.navigator.msSaveOrOpenBlob) {
              window.navigator.msSaveOrOpenBlob(response, fileName)
            } else {
              const href = URL.createObjectURL(response)
    		  let ele = document.createElement('a')
    		  ele.target = '_blank'
    		  ele.href = href
    		  ele.download = fileName
    		  ele.click()
    		  ele = null
    		  URL.revokeObjectURL(href)
            }
          } else {
            reject(new Error(`${xhr.status}:请求失败`))
          }
        }
        xhr.error = err => {
          reject(err)
        }
        xhr.onprogress = e => {
          if (e.lengthComputable) {
            const percentComplete = e.loaded / e.total
            progressCallback && progressCallback(percentComplete)
          }
        }
        xhr.send(null)
      })
    }
    

    使用:

    // 调用(以 vue + element 示例)
    const message = this.$message('加载中...')
    downloadFromApi(url).then(res => {
      message.close()
    })
    

    五、小结

    • window.location.hrefwindow.open的方式虽然简单,但用户体验上不太友好。
    • 常规情况下使用动态a标签的方式即可。
    • 如果需要弹窗下载跨域的图片、视频、pdf等浏览器能直接预览的资源,需要使用ajax请求方式。
    • 如果url资源或接口已配置filename,而前端又想自定义文件下载名时,使用ajax请求方式。
    • 如果需要前端自定义展示下载文件进度,使用ajax请求方式。

    参考链接:
    1、https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest

    展开全文
  • 选择导出文件格式(.tif,.jpg,.ics) 合并通道或最大投影选项 图像名称前生成数字 马赛克/图块扫描:不提取单个图块,而仅提取合并的图像 您可能需要修改此宏才能与其他复杂格式一起使用... 请报告您遇到的...
  • 利用python requests实现文件上传和导出自动文件上传文件导出 文件上传 文件上传的接口请求头中的Content-Type属性就要使用multipart/form-data; multipart/form-data是指定传输数据为二进制类型,比如图片、...
  • 导出csv文件时间等字段会自动改变格式的问题 只要把数字字段后面加上显示上看不见的字符即可,字符串前面或者结尾加上制表符"\t" for example in golang: "\t" + v.CloseTime
  • 导入控制点TXT文本,反算后自动保存经纬度TXT文本。2。在上一步中,控制点的经度和纬度已经转换。接下来,经度和纬度TXT文本转换为excel格式。打开exceltokml生成工具,打开控制点的excel格式文件。投影设置---投影...
  • Create一个新的procedure,开头可以做一个判断来决定什么时候执行数据结果导出,下面来看看这个存储过程:Create procedure[dbo].[pr_Dept_Bak]asbegin---这里可以增加对数据表的查询条件或更多的数据处理;...
  • 前段时间上传了一个fluent大批量数据处理的代码,经过同学运行发现,当fluent导出数据量到excel时,因为超过百兆太大不支持,于是稍微改写了一下,这样可以选择 以dat格式或则txt格式储存,然后运用该段代码处理...
  • ORACLE 导入导出

    2021-04-30 11:17:58
    备份类型:逻辑备份 / 物理备份(冷、热)逻辑备份ORACLE 9i 脚本哪里运行,文件就产生哪里。exp对应imp,确保服务器与客户端字符集一致exp Grants=Y Compress=Y Consistent =Y Indexes = Y Constraints =Y Rows =...
  • 默认情况下,用于解析文件系统域名的DNS服务器的IP地址会在创建ECS时自动配置到ECS上,不需要人工配置。除非默认的DNS服务器的IP地址被修改,导致域名解析失败,才需要配置DNS的IP地址。华为云帮助中心,为用户提...
  • PYTHON模块openpyxl在导出EXCEL文件时设置自动列宽 搜索了一些网上的方法,直接搬运别人的代码总是不满意最后的效果,所以最后参考了网上的方法做了一些调整。 大致思路就是找出每一列的字符串最大长度,直接设置...
  • Allegro导出生产文件

    千次阅读 2021-04-21 15:08:36
    Allegro导出生产文件 文章目录: 1、导出前设置 2、导出钻孔文件 3、导出gerber文件 ...1.在导出gerber文件之前,要先对图纸的参数、层叠结构、铺铜皮的参数、DRC的状态报告进行统一检查,只有设置的参数对了,
  • PDF电子书是最流行的格式,可以注释可以带书签目录方便阅读。本文介绍使用 PDFBookmark-Exchanger软件实现 PDF书签的导入、导出、交换。
  • NAVICAT 15-自动运行
  • 作为ArcGIS工作者,日常编辑大量的MXD工程文件,尤其一些复杂的工程文件在导出地图时用时较长,如果MXD工程较多时需要一个一个来打开工作空间并导出。使用“批量导出工具”可以将文件夹内的所有MXD工程一次性自动...
  • 港泉SMT 分类: 客户关注一、PADS如何导出SMT坐标文件适用PADS软件版本:PADS Layout,PowerPCB,PADS9.0,PADS9.1,PADS9.2,PADS9.3,PADS9.4,PADS9.5,PADS9.6,PADS9.7目的:PADS Layout导出SMT坐标文件二、导出SMT坐标...
  • (如果您多个草图文件中有一个“页面1”,则需要重命名它们以获取多个PNG导出。) 建立 格式或将此存储库克隆到您的计算机。 Finder中,转到“ Go > Go to Folder…然后输入~/Library/Services/ 。 然后将...
  • 方法一 psql中运行终端进入用户test下的数据库testdb:假设要执行的.sql文件叫做d1.sql,存放路径为:/mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/d1.sql,导出文件叫做d1.out,存放的路径为:/mnt/...
  • access数据库批量导出EXCEL文件
  • Excel导出 并完成后自动打开

    千次阅读 2019-03-19 14:28:37
    java 设置Response 实现自动下载Excel...实现 下载文件完成后自动打开 本文以Excel为例子 环境为SpringMVC maven依赖如下: <!--文件上传--> <dependency> <groupId>commons-fileupload&...
  • 自动导出/保存不同尺寸的图像。 最初开发用于为网站上的自适应图像快速创建不同尺寸。 该脚本目前不稳定,缺少很多功能: 目前仅支持 JPEG 文件,必须源代码中更改图片质量等选项。 但是,可以轻松添加另一种...
  • 怎么python中将大量数据导出到Excel文件发布时间:2021-01-16 11:09:40来源:亿速云阅读:76作者:Leah这期内容当中小编将给大家带来有关怎么python中将大量数据导出到Excel文件,文章内容丰富且以专业的角度...
  • 对于单个数据项,可能涉及其关联的一系列数据,如根据数据项的id查询出相关联的子项数据,故导出的话希望以单数据项单json文件的方式。但为了方便,又需要批量导出并合并为一个压缩包。(此处只涉及前端导出解决方案...
  • 我这是项目根目录下创建了一个template文件夹存放excel导出模板文件 TemplateExportParams params = new TemplateExportParams("./template/导出excel模板.xlsx"); //从数据库查询到数据 List users = this.list()...
  • 使用shell脚本导出dat和ctl文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 157,509
精华内容 63,003
热门标签
关键字:

导出文件会自动保存在哪