2017-11-02 2 views
-1

나는 아래의 값으로 5 행 5 열이있는 엑셀 시트가 : 나는 위의 데이터를 변환 할 수있는 방법데이터 읽기 및 파일에 CSV 형식으로 쓰기 - 파이썬

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 형식으로 변환하고 텍스트 파일에 씁니다. 나는 엑셀에서 읽을 수 있지만 글을 쓰면 모두 결합됩니다.

출력 형식 :

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" 

이 친절하게 안내합니다. 파이썬 런타임에서

+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

고마워, 나는 해결책을 가지고있다. 여기서 한 가지 문제는 쉼표가 행의 마지막 값 뒤에 있어도 있다는 것입니다. 어떻게 생각하세요? – 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

고마워, 나는 해결책을 가지고있다. 여기서 한 가지 문제는 쉼표가 행의 마지막 값 뒤에 있어도 있다는 것입니다. 어떻게 생각하세요? – 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" 

그러나 한 가지 문제는 쉼표 ,도 행의 마지막 값 이후에 존재하는 점이다. 어떻게 생각하세요?

관련 문제