Ruby Txt 开关 CSV 常用工具

to

require 'csv'namespace :sys_file_conver dodesc "把txt数据导入到csv中"task :txt_to_csv => :environment doamount = 100head_hash = {'对账文件名'  =>[12],'商户号'       =>[15],'商户类型'     => [4],'清算日期'     => [8],'总比数'       => [12],'总金额'       => [15, amount],'支付总比数'    => [12],'支付总金额'    => [15, amount],'退款总比数'    => [12],'退款总金额'    => [15, amount],'撤销总比数'    => [12],'撤销总金额'    => [15, amount]}body_hash = {'清算日期'    =>  [8],'入账日期'    =>  [8],'卡号'        =>  [19],'交易类型'    => [4],'交易金额'    => [ 15, amount],'入账金额'    => [ 15, amount],'手续费金额'  => [ 15, amount],'流水号'     => [6],'交易日期时间'  => [10],'终端号'     => [8],'商户号'     => [15],'商户类型'    => [4],'受理机构号'  => [6],'系统检索号'  => [12],'授权号'     => [6],'渠道类型'    => [2],'支付卡种'    => [2],'订单号'     => [40]}txt_file_path = ENV['txt_file_path'] || "#{Rails.root}/tmp/txt_file.txt"csv_file_path = ENV['csv_file_path'] || "#{Rails.root}/tmp/csv_file.csv"File.new(csv_file_path) if FileTest::exists?(csv_file_path)CSV.open(csv_file_path,'wb:gbk:gbk') do |data| # wb:gbk:gbk to gbk default encoding is utf-8data << hash_to_array_value(head_hash)txt_array = IO.readlines(txt_file_path, :encoding => 'GB2312')txt_array.each_with_index do |str,index|case indexwhen 0data << str_to_array_by_hash(str,head_hash)data << hash_to_array_value(body_hash)elsedata << str_to_array_by_hash(str,body_hash)end  endendend
# ----------------------------Hash to array------------------------------------
def str_to_array_by_hash(str,hash)array = []hash_to_array_value(hash, 1).inject(0){ |idx, code|str_code = str[idx,code[0]]str_code = str_code.to_f/code[1] unless code[1].blank?array << convert_gbk(str_code)idx+code[0]}array
end# def hash_to_array_key(hash)
#   hash.inject([]){|a,d| a << convert_gbk(d[0])}
# end
def hash_to_array_value(hash,i=0)hash.inject([]){|a,d| a << convert_gbk(d[i])}
end# ---------------------------Convert util--------------------------------------
def convert(str)
require 'iconv'
begin
converter = Iconv.new("UTF-8", "GB2312")
converter.iconv(str)
rescue
str
end
enddef convert_gbk(str)
require 'iconv'
begin
converter = Iconv.new("GB2312", "UTF-8")
converter.iconv(str)
rescue
str
end
endend

Html form tag

.upload-body= form_tag upload_file_file_converts_url, :multipart => true do%p%span.label 上传文件= file_field :public, :picture%p%input.button.ml20{ :type => 'submit', :value => '转码' }

controller upload to download

  #iconv -f gbk csv_file.csv def upload_fileuploaded_io = params[:public][:picture] file = File.join("public", uploaded_io.original_filename)FileUtils.cp uploaded_io.path, filesend_file FileConvert.txt_convert_csv(file),:filename => "CSV-#{uploaded_io.original_filename} #{Time.now.strftime('%F %T')}.csv"end

版权声明:本文博客原创文章,博客,未经同意,不得转载。

txt 开关 csv 可通用 工具相关推荐

  1. txt格式转换成prg_Advanced CSV Converter v6.69下载(csv文件转换工具)

    CSV文件是一个纯文本文件,有的时候,由于使用需求,需要将CSV转换为其他的格式使用,在这里,小编向大家推荐这款Advanced CSV Converter转换工具,它支持将CSV格式的文件转换成DB ...

  2. Online PDF to PNG, PDF to JPEG, PDF to WEBP, PDF to TXT - toolfk程序员在线工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  3. R语言和RStudio安装,载入TXT、CSV和XLSX(利用RODBC)文件

    系列文章 R语言进行系统聚类分析并作图(数据来源国家统计局) R语言载入arules程序包的Epub数据集,使用Apriori算法,进行关联规则分析 R语言利用贝叶斯分类法(klaR程序包),训练数据 ...

  4. Ubuntu中rosbag、txt、csv 格式文件的转换和bag文件图片的提取

    1.数据集rosbag 1.1 录制所有话题的包 rosbag record -a 1.2 录制指定话题,设置 bag 包名为:bag_name rosbag record -O bag_name.b ...

  5. txt或者csv数据文件的格式是有要求的,如下shell代码中说明。

    项目使用Oracle数据库,项目开发完成后,由于遗留系统的定制关系需要导入到库中,因为是一次性的,所有没有必要提供页面导入,决定使用Oracle提供的功能直接导入到Oracle库表中. txt或者cs ...

  6. python创建csv文件并写入-Python 将数据写入文件(txt、csv、excel)

    一.将列表数据写入txt.csv.excel 1.写入txtdef text_save(filename, data):#filename为写入CSV文件的路径,data为要写入数据列表. file ...

  7. 使用python开发json、csv数据格式转换工具

    使用python开发json.csv数据格式转换工具 json和xml是业界常用的数据格式,而游戏行业经常使用csv配表,包括本地化文本和数值.本文介绍csv和json序列化.逆序列化相关的pytho ...

  8. 【游戏开发】Excel表格批量转换成CSV的小工具

    一.前言 在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求.这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不说这些表格在游戏中读取的速度,但就 ...

  9. 在线CSV转YAML工具

    在线CSV转YAML工具 在线CSV转YAML工具 CSV To YAML Converter 帮助你在线将 CSV 转换为 YAML 代码.CSV To YAML Converter 帮助你在线将 ...

最新文章

  1. Kubernetes 1.14 版本发布:正式支持Windows 节点,持久化本地卷进入GA
  2. 清华大学:刘洋——基于深度学习的机器翻译
  3. JZOJ 4421. aplusb
  4. oracle 主键列创建自增长,powerdesigner创建oracle 数据库表,设置表主键列为自动增长。 ....
  5. 千万级别数据查询优化_从千万级数据查询来聊一聊索引结构和数据库原理
  6. Java中native方法的使用
  7. mac免安装mysql配置_mysql免安装版配置使用
  8. 微信小程序开发---微信获取微信绑定手机号并登录流程
  9. 如何打开docx格式的文件?
  10. ChatGPT大规模封号...
  11. #2021暑假杭电多校8_1003.Ink on paper
  12. 我的python面试简历
  13. Python 列表(list)长度
  14. 刘韧:煮知识 论英雄
  15. vmware windows7安装usb3.0驱动
  16. 51单片机频率计c语言程序,51单片机简易频率计源代码
  17. 一文多图搞懂KITTI检测数据集下载使用(附网盘链接)
  18. 求N分之一序列的前N项和
  19. 数蚁的校园云存储优势 云资源管理平台 数蚁科技
  20. 用java代码实现查询数据库

热门文章

  1. 小程序 | 微信小程序from报名表单提交至数据库(含js提交函数)
  2. Android 获取app 地址,获取手机设备信息、app版本信息、ip地址
  3. 一个社交电商小程序配套的平台接
  4. 小说网站程序源码 自动采集 SEO优化
  5. Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (初级)
  6. Magento调试 - 页面空白,打开错误报告的方法
  7. Magento 获取当前店铺信息(首页,类别,地址等)
  8. 【服务器】挖矿病毒 kdevtmpfsi(一针见效)
  9. 大数——大数判等(hdu2054)
  10. 泛型数组 List c# 1613647847