web-dev-qa-db-ja.com

CSVを適切にエクスポートするOpenOffice(番号をTEXTとして保存)

私はOPEN-OFFICEを使用してCSVを処理および保存しています。カンマ区切り文字と '"'も使用しています。ただし、CSVを保存するときに、すべての数値がカプセル化されているわけではありません。Open-Officeに数値をテキストとして処理させ、カプセル化させるにはどうすればよいですか。例:

"store","website","attribute_set","type","sku","name","price","categories","description","qty","sizet","is_in_stock","status","visibility","tax_class_id"
"admin","base","test","simple","T010013-012","Test12","12","test/test","Desc12",12,"S","1","Enabled","Catalog, Search","Taxable Goods"
"admin","base","test","simple","T010013-013","Test13","13","test/test","Desc13",13,"M","1","Enabled","Catalog, Search","Taxable Goods"
"admin","base","test","simple","T010013-014","Test14","14","test/test","Desc14",14,"L","1","Enabled","Catalog, Search","Taxable Goods"
"admin","base","test","simple","T010013-015","Test15","15","test/test","Desc15",15,"XL","1","Enabled","Catalog, Search","Taxable Goods"
"admin","base","test","simple","T010013-016","Test16","16","test/test","Desc16",16,"XXL","1","Enabled","Catalog, Search","Taxable Goods"
"admin","base","test","configurable","T010013","TestParent","5","test/test","DescParent","30","","1","Enabled","Catalog, Search","Taxable Goods"

ご協力ありがとうございました。 PS:MagentoにMAGMIスクリプトを使用しています。商品のアップロード

10
user1023021

これには2つのステップが必要です。

  1. 数字を保持するセルをテキストとしてフォーマットします(列全体でそのフォーマットが必要になるため、そのフォーマットを列全体に適用するだけで、行を追加するときにすべての新しいセルをフォーマットする必要はありません)。

  2. すべてのテキストセルを引用するようにエクスポートフィルター設定を変更します。

edit filter settings

quote all text cells

この設定で、Calcはこのシートを保存する必要があります。

sheet

次のように:

"bar","42"
"foo","57"

ところで、Calcは完全に標準に準拠しておりnot、デフォルトですべての数値を引用します。少なくとも、 RFC 418 はすべてのフィールドを引用する必要はありません。

20
tohuwawohu

正しいSQLインポート構文を使用して、この問題を回避する簡単な方法があります。次のことを考慮してください。

LOAD DATA LOCAL INFILE '/yourfile.csv' 
INTO TABLE yourtable  
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"';

OPTIONALLY ENCLOSED BY '"'行は、Open/LibreOfficeなどのセカンダリアプリケーションからのエクスポート時にCSVがどのようにフォーマットされるかをいじくり回すことなく、数値行の問題を解決するはずです。

1
Josh Wieder

OpenOfficeまたはExcelでオプションを見つけようとするのではなく、これを行うためのRubyスクリプトを少し書きました。それでも、それらを見つけることができません。

require 'csv'

rows = CSV.open(ARGV[0]).readlines
CSV.open("#{ARGV[0].split('.')[0]}_qgisfriendly.csv", "w", {:force_quotes => true}) do |csv|
  rows.each do |row|
    csv << row
  end
end
0
boulder_ruby