2017-11-02 10 views
-1

を、私は以下の値を持つ5行5列を持っているExcelシートを持っている:読むのExcelからのデータとファイルへのCSV形式での書き込み - Pythonの

私は上記のデータを変換することができますどのよう
Time Launch Login Password Signout 
00:01 1.26  1.56  5.24  12.3 
00:02 1.22  1.55  5.34  2.35 
00:03 1.36  1.53  1.24  2.13 
00:05 1.46  1.26  2.24  1.32 

csv形式に変換してテキストファイルに書き出します。私はExcelからそれらを読むことができますが、私が書くとき、彼らはすべて結合されます。

出力フォーマット:

Time,Launch,Login,Password,Signout 
00:01,1.26,1.56,5.24,12.3 
00:02,1.22,1.55,5.34,2.35 
00:03,1.36,1.53,1.24,2.13 
00:05,1.46,1.26,2.24,1.32 

マイコード:

workbook3 = xlrd.open_workbook('C:\Users\aa\Desktop\Report3.xls', logfile=open(os.devnull, 'w')) 
worksheet3 = workbook3.sheet_by_index(0) 
num_cols3 = worksheet3.ncols 
num_rows3 = worksheet3.nrows 
for row_index3 in range(0, num_rows3): 
    for col_index3 in range(0, num_cols3): 
     cell_val= worksheet3.cell(row_index3, col_index3).value 
     with open("C:\Users\aa\Desktop\outputfile.txt", 'a') as f: 
      f.write(cell_val) 
print "Write Completed" 

親切に案内します。 Pythonランタイムから

+0

多分あなたは ';'カラムセパレータとして '、'の代わりに?いくつかのロケールでは、これはExcelでcsvを開く場合です。 –

+0

私はExcelからコンテンツを読み込んでいて、それをテキストファイルに新しく書き込んでいますが、これでも違いがありますか?私はまだCSV形式に変換しています。 – Dev

答えて

1

あなたはパンダを使用して試みることができます。それは、あなたが超簡単にやりたいことを作ります。

import pandas as pd 
filename = "filename.xlsx" 
data = pd.read_excel(filename).to_csv(filename.replace(".xlsx", ".csv")) 

また、2次元配列のすべてのデータを収集する方が簡単です。なので

data = [] 
for row_index3 in range(0, num_rows3): 
    row = [] 
    for col_index3 in range(0, num_cols3): 
     row.append(worksheet3.cell(row_index3, col_index3).value) 
    data.append(row) 
with open("C:\Users\aa\Desktop\outputfile.txt", 'w') as f: 
    f.write("\n".join(','.join(map(str, row)) for row in data)) 
print "Write Completed" 
+0

ありがとう、私は解決策を持っています。ここでの問題の1つは、行の最後の値の後にもカンマが存在することです。どのようにそれを超えてどのようなアイデア? – Dev

+0

各値の後にコンマを書くのではなく、行の上で '、'。joinを使うことができます。私は自分の答えを編集して、私が何を意味するかを示します。 –

+0

ジャック、私は別の場所にパンダを使用して変換されたファイルを書きたい場合は、どうすればいいですか? – Dev

0

使用モジュールのcsvはhttps://docs.python.org/2/library/csv.html

import csv 
with open('eggs.csv', 'wb') as csvfile: 
    spamwriter = csv.writer(csvfile, delimiter=' ', 
          quotechar='|', quoting=csv.QUOTE_MINIMAL) 
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans']) 
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam']) 
+0

ありがとう、私は解決策を持っています。ここでの問題の1つは、行の最後の値の後にもカンマが存在することです。どのようにそれを超えてどのようなアイデア? – Dev

0

私はこの回答を得ることができました。以下のコード。ここ

workbook3 = xlrd.open_workbook('C:\Users\aa\Desktop\Report3.xls', logfile=open(os.devnull, 'w')) 
worksheet3 = workbook3.sheet_by_index(0) 
num_cols3 = worksheet3.ncols 
num_rows3 = worksheet3.nrows 
f = open("C:\Users\aa\Desktop\outputfile.txt", 'a') 
for row_index3 in range(0, num_rows3): 
    for col_index3 in range(0, num_cols3): 
     cell_val= worksheet3.cell(row_index3, col_index3).value 
     f.write(cell_val+",") 
    f.write("\n")  
print "Write Completed" 

しかし、一つの問題は、コンマ,は、偶数行の最後の値の後に存在しているされていることです。どのようにそれを超えてどのようなアイデア?

関連する問題