require 'csv'
CSV.foreach("test.csv") do |row|
puts row
end
参考实例如下:
.page-model-form
.page-admin-form-info
.desc 请先下载 CSV 示例文件,按照给定格式填充数据,然后上传导入
%a.download{:href=>'/csv_demo/students.csv'} 下载示例文件
= flash_info
= form_tag "/admin/students/import_from_csv",:method=>:post,:multipart =>true do
.field
%label 选择 CSV 文件
= file_field_tag :csv_file
.field
=submit_tag '确定导入'
读取csv文件中读取:一次读入全部(设置headers使 CSV#shift() 以CSV::Row对象返回而不是数组;使
require'csv'CSV#read() 返回 CSV::Table 对象而不是数组)CSV.read('test.csv')#=>Array#headers默认为false,如果设置为true,csv的第一行将被视为标题CSV.read('test.csv',headers:true)#=>CSV::Table#headers设置为数组,这个数组将被作为标题CSV.read('test.csv',headers:[1,2,3,4,5])#headers设置为字符串,这个字符串内容将被作为标题CSV.read('test.csv',headers:"1,2,3,4,5")
文件中读取:一次读入一行
#由于headers配置,返回类型发生变化(这个方法默认为第一行是标题,不会进行返回)CSV.foreach'test.csv'do|row|puts row.class#=>ArrayendCSV.foreach('test.csv',headers:true)do|row|puts row.class#=>CSV::Rowend#return_headers:true 返回标题CSV.foreach('test.csv',return_headers:true)do|row|p row#=>返回Arrayend
字符串中读取:一次读取一行
CSV.parse("CSV,data,String")do|row|# use row here...end
字符串中读取:全部读取
CSV.parse("CSV,data,String")#[]方法需要返回的类型为CSV::ROW所以设置参数headers:truecontent = File.read('data.csv') csv = CSV.parse(content,headers:true) sum =0csv.eachdo|row|sum += row['id'].to_iendputs sum
具体方法如下:
1、打开WPS表格,然后新建一个文档。
2、依次单击“数据,导入数据”,然后选择需要转换的csv文件后,单击“打开”:
3、点击【直接打开...】 选择【下一步】;
4、打开的csv文件如果有乱码,我们就要选择合适的编码格式,然后下一步。
5、在文本导入向导中,选择“分隔符号”,然后单击“下一步”:
6、勾选“Tab键”和“逗号”,然后单击“下一步”。如果csv文件列分隔符是分号或者其他符号,请勾选相应的选项:
7、在数据预览中,根据数据类型,在文本导入向导的左上角选择相应的数据类型,然后单击“完成”: