txt 开关 csv 可通用 工具
Ruby Txt 开关 CSV 常用工具
to
- require 'csv'
- namespace :sys_file_conver do
- desc "把txt数据导入到csv中"
- task :txt_to_csv => :environment do
- amount = 100
- head_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-8
- data << hash_to_array_value(head_hash)
- txt_array = IO.readlines(txt_file_path, :encoding => 'GB2312')
- txt_array.each_with_index do |str,index|
- case index
- when 0
- data << str_to_array_by_hash(str,head_hash)
- data << hash_to_array_value(body_hash)
- else
- data << str_to_array_by_hash(str,body_hash)
- end
- end
- end
- end
- # ----------------------------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
- end
- def convert_gbk(str)
- require 'iconv'
- begin
- converter = Iconv.new("GB2312", "UTF-8")
- converter.iconv(str)
- rescue
- str
- end
- end
- end
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_file
- uploaded_io = params[:public][:picture]
- file = File.join("public", uploaded_io.original_filename)
- FileUtils.cp uploaded_io.path, file
- send_file FileConvert.txt_convert_csv(file),:filename => "CSV-#{uploaded_io.original_filename} #{Time.now.strftime('%F %T')}.csv"
- end
版权声明:本文博客原创文章,博客,未经同意,不得转载。
txt 开关 csv 可通用 工具的更多相关文章
- 【游戏开发】Excel表格批量转换成CSV的小工具
一.前言 在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求.这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不说这些表格在游戏中读取的速度,但就 ...
- txt文件按行处理工具类(可以截取小说、分析日志等)【我】
txt文件按行处理工具类(可以分析日志.截取小说等) package file; import java.io.BufferedReader; import java.io.BufferedWrite ...
- 预读(读取文件前几行)文件(txt,dat,csv等)程序
需求: txt.dat.csv文件很大,需要花很长的时间打开, 但实际上我们只需要查看文件的前几行,查看数据的内容和格式 exe & code : https://github.com/co ...
- save tracking results into csv file for oxuva long-term tracking dataset (from txt to csv)
save tracking results into csv file for oxuva long-term tracking dataset (from txt to csv) 2019-10-2 ...
- solr6.6 导入 pdf/doc/txt/json/csv/xml文件
文本主要介绍通过solr界面dataimport工具导入文件,包括pdf.doc.txt .json.csv.xml等文件,看索引结果有什么不同.其实关键是managed-schema.solrcon ...
- python读取txt、csv、xml
读取txt,无需引入任何包: user_file = open('user_info.txt','r') lines = user_file.readlines() user_file.close() ...
- mysql将表数据导出为txt或csv文件
语法:select 字段 from 表名 into outfile 路径 示例txt:select * from stu_class into outfile './stu_class.text'; ...
- 20171026python读取txt写入csv
import csv def get_lines(filepath): with open(filepath) as file_object: lines=set(file_object.readli ...
- R语言学习——R读取txt、csv、xls和xlsx格式文件
最近项目中运用到了R读取文件数据,所以把相关好用的.经过验证的方法总结了一下,有效避免下次入坑. 1. R读取txt文件 使用R读取txt文件直接使用read.table()方法进行读取即可,不需要加 ...
随机推荐
- 5月,专用程序猿的经典大作——APUE
五一小长假刚刚过去,收回我们游走的心.開始你们的读书旅程吧! 本期特别推荐 经典UNIX著作最新版. 20多年来,这本书帮助几代程序猿写出强大.高性能.可靠的代码. 第3版依据当今主流系统进行更新,更 ...
- java提高篇(五)-----使用序列化实现对象的拷贝
我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,使得性 ...
- 【转】java JTable排序和过滤
JTable排序 在Java SE 6中除了java.awt被更新外,javax.swing同时也有了很大的改进.在C/S程序中我们会经常使 用到"表".如我们可以在查询数据库后将 ...
- android 常见的解决(mdpi、hdpi 、xhdpi、xxhdpi )屏幕调整
查询到执行的system service后,就能够在dumpsys后面加上service的名字,查看指定的service信息. adb shell dumpsys activity adb shell ...
- cocos2d-x lua 学习笔记(1) -- 环境结构
Cocos2d-x 3.0超过环境的版本号来建立和前Cocos2d-x 2.0 差异较大的版本,从同时Cocos2d-x 3.0项目打包成apkAndroid的应用程序文件,步骤,构建环境有些乏味安德 ...
- Hadoop Hive sql 语法详细解释
Hive 是基于Hadoop 构建的一套数据仓库分析系统.它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,能够将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...
- Python标准库简介
在<Python语言参考手册>描述中的描述Python语法和语义,而本手冊主要介绍了Python标准库的内容和使用,也介绍了一些发行库里可选的组件库. Python标准库包括的内容是非常广 ...
- ExtJs4得知(五岁以下儿童)主要的Ext分类
Ext类是ExtJs最常见的.最基本的类,它是一个全局对象,它封装了全班.辛格尔顿和 Sencha 该方法提供了一种有用的库. 嵌套在该命名空间中一个较低的水平最用户界面组件. 但是提供了很多有用的功 ...
- RDIFramework.NET ━ .NET高速信息系统开发框架钜献 V2.9 版本震撼发布
RDIFramework.NET ━ .NET高速信息化系统开发框架钜献 V2.9 版本号震撼公布 全新体验.全新感觉.2015钜献! 继上个版本号"RDIFramework.NET V2 ...
- android开源应用(主要是博客上带有分析的)收集 【持续更新】
2014.5.24更新: (android高仿系列)今日头条 http://blog.csdn.net/vipzjyno1/article/details/26514543 CSDN Andro ...