`
xiaoheliushuiya
  • 浏览: 423182 次
文章分类
社区版块
存档分类
最新评论

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




分享到:
评论

相关推荐

    批量XLS格式转为CSV格式工具

    标题提到的"批量XLS格式转为CSV格式工具"是一种专门用于将多个XLS(Excel 97-2003工作簿格式)文件转换成CSV(逗号分隔值)格式的软件或脚本。CSV因其简洁、通用和易于导入其他程序而被广泛使用,如数据库管理系统、...

    XML文件批量转换CSV文件工具.rar

    因此,无论你使用的是Windows、Mac还是Linux操作系统,只要安装了Java,都可以运行这个XML转CSV工具。 总的来说,这个“XML文件批量转换CSV文件工具”是数据处理工作流中的实用工具,尤其适用于需要将XML数据整合到...

    CSV转XLS工具

    CSV是一种轻量级的文本文件格式,通常用于数据交换,因为它的通用性和简单性。XLS则是Microsoft Excel创建的二进制文件格式,提供更丰富的功能,如公式计算、图表制作、格式化等。 标题提到的“CSV转XLS工具”是指...

    通达信期货数据转csv

    对于TXT文件,可以使用内置的open函数读取,然后用csv模块写入。确保脚本能够处理所有需要的期货合约,并且在新数据更新时能自动运行。 4. 数据整合:在转换过程中,你可能会得到多个CSV文件,每个文件对应一个期货...

    NASA_li电池_B0025-28.csv文件.rar

    "NASA_li电池_B0025-28.csv"文件是一个CSV(Comma Separated Values)格式的文件,这种格式是数据存储的通用标准,便于各种编程语言读取和解析。文件名中的“B0025-28”可能指的是电池编号或实验条件,具体含义需要...

    xls&xlsx;转csv

    CSV因其简洁、通用和易于处理的特性,在数据分析和导入其他程序时非常受欢迎。 XLS是Excel早期版本(2003及更早)使用的文件格式,而XLSX是自Excel 2007引入的新格式,基于XML标准,具有更好的存储效率和更大的工作...

    把同花顺或通达信日线数据转换成csv文件

    对于投资者和研究人员来说,有时需要将这些软件的数据导出为更通用的格式,如CSV(逗号分隔值)文件,以便于在Excel或其他数据分析工具中进行进一步处理和分析。本篇将详细讲解如何将同花顺或通达信的日线数据转换成...

    csv转换execel

    CSV是一种简单、通用的数据交换格式,它以纯文本形式存储数据,每一行代表一个记录,列数据由逗号分隔。而XLSX是Microsoft Excel 2007及更高版本使用的默认文件格式,它采用了更先进的存储结构,包括XML(可扩展标记...

    Python读取mat文件,并转为csv文件的实例

    Mat文件是MATLAB软件的专用数据存储格式,而csv文件则是一种通用的文本文件,通常用来存储表格数据,用逗号分隔字段。Mat文件常用于存储科学计算、工程等领域的数据,但因为其格式受限,有时需要转换为更通用的格式...

    Python-csvstosqlite将CSV文件转换成SQLite数据库

    而CSV(Comma Separated Values)文件则是一种常见的数据交换格式,因其简单易读和通用性,被广泛用于数据导入和导出。当需要将大量CSV数据存储到一个结构化的数据库中时,Python库`csvs-to-sqlite`提供了一个方便的...

    通信录csv 格式转换成vcf

    3. **转换工具**:可以使用现成的转换工具,比如标题所指的“通信录 CSV 格式转换成 vcf”软件,或者在线服务,将CSV文件转换为VCF。这些工具会解析CSV文件,按照VCF格式重新组织数据。 4. **运行转换**:运行`...

    CSV文件转换.zip

    CSV(Comma Separated Values)文件是一种常见的数据存储格式,广泛用于数据交换,因为它具有简单、通用和可读性强的特点。在C#编程环境中,处理CSV文件是一项常见的任务,包括读取、写入以及转换CSV数据。这个...

    arcgis二次开发 用arcgis打开csv转为shp的插件

    CSV是一种通用的数据存储格式,常用于存储地理位置数据,但它不包含空间信息。而SHP是GIS中的标准矢量数据格式,包含了空间坐标和属性数据,是地理数据交换和分析的常用格式。在ArcGIS中,我们可以通过“导入数据”...

    xls二维结构数据表转txt数据文本等4小工具集 v1.2.zip

    xls二维结构数据表转txt数据文本等4小工具集包括xls二维结构数据表转txt数据文本、csv数据文本、mysql语句及数据预览小工具。 xls二维结构数据表转txt数据文本等4小工具集 v1.2更新日志 改进读取方式,解决读取...

    批量转换DBF格式文件为CSV格式文件

    相比之下,CSV是一种通用的数据交换格式,它以纯文本形式存储表格数据,易于阅读和处理。因为CSV文件可以被大多数电子表格软件(如Microsoft Excel)直接打开,所以它们在数据导入导出、数据分析和共享等方面非常...

    shp转MapInfo、BNA、CSV、GML、KML、GMT、GPX工具

    CSV是一种通用的文本格式,用于存储表格数据,可被许多应用程序读取,但不包含空间信息。 GML是一种基于XML的开放标准,用于描述地理空间信息。KML则主要用于Google Earth和Google Maps,用于展示三维地球数据。GMT...

    实战csv文件的生成与读取

    CSV文件因其简单易用和通用性而广泛应用于数据交换和数据分析。本实战项目涉及CSV文件的生成和读取,特别是针对加利福尼亚房价预测数据集。 首先,我们了解CSV文件的生成过程: 1. 定义输出目录`output_dir`来存储...

    C#中将DataTable转换成CSV文件的方法

    在处理大量数据时,将DataTable转换为CSV(逗号分隔值)文件是一种常见的需求,因为CSV文件格式简单、通用且易于导入到各种数据分析工具中。下面将详细解释如何使用C#实现这个转换过程。 首先,CSV文件是一种文本...

    WYDToolKit

    WYDToolKit是一个专为WYD656格式设计的工具,其核心功能包括WYD656 bin文件到CSV的转换以及CSV回转为WYD656 bin文件。这个工具简化了数据格式转换的过程,使得非技术背景的用户也能轻松操作。 5. **WYD656转CSV** ...

    hammergrapher:命中水域API,获取json,转为csv,使用Dygraphs渲染图

    例如,我们可以设置`dateWindow`来选择图形的一部分进行放大显示,使用`tooltipFormatter`使工具提示固定在顶部,提高用户交互体验。 在实际项目中,我们还需要考虑错误处理、数据清洗、动态加载和刷新图表等功能。...

Global site tag (gtag.js) - Google Analytics