2016-08-11 159 views
0

我正在嘗試編寫一個將.csv文件轉換爲.xlsx文件的腳本,然後對新文件執行一些數據分析。我正在嘗試複製我製作的新文件時遇到錯誤。將.csv轉換/分析爲xlsx文件

這裏是錯誤:

File "C:/Users/mmunoz/Desktop/Excel Analysis/danielaScript1.0.py", line 40, in <module> 
    workbookCopy = xlutils.copy(workbook) 

TypeError: 'module' object is not callable 

這裏是我的原代碼

import os, csv 
import glob 
from openpyxl.cell import get_column_letter 
from xlsxwriter.workbook import Workbook 
import xlrd 
import statistics as st 
import xlutils.copy 

position = [] 
load = [] 
positionMM = [] 
force = [] 

csvfile = input('Please input filename: ') 

for csvfile in glob.glob(os.path.join('.', '*.csv')): 
    workbook = Workbook(csvfile + '.xlsx') 
    worksheet = workbook.add_worksheet() 
    with open(csvfile, 'r') as f: 
     reader = csv.reader(f) 
     for r, row in enumerate(reader): 
      for c, col in enumerate(row): 
       columb_letter = get_column_letter((c+1)) 
       s = col  
       try: 
        s= float(s) 
       except ValueError: 
        pass 
       worksheet.write(r, c, s) 


#%% 
#workbook1 = xlrd.open_workbook(workbook) 
workbookCopy = xlutils.copy(workbook) 
sheet = workbook.sheet_by_index(0)    
numRows = sheet.nrows 
numCols = sheet.ncols 
for row in range(2, numRows): 
    position.append(sheet.cell_value(row,2)) #appends values in column to  position array 
    load.append(sheet.cell_value(row,3))#appends values in column to load array 
+0

上面的代碼是不完整的,也可以是不正確地縮進。我認爲你需要把重點放在你的任務的小部分,並確保它們中的每一個都在工作,然後再嘗試把它們放在一起。例如,如何將每個CSV保存爲.xlsx文件,而不需要任何額外的處理。現在,上面的代碼甚至沒有這樣做。 –

+0

我也認爲你會發現你根本不能真正使用xlutils。該模塊用作xlrd和xlwt之間的橋樑,並且不能使用xlwt創建.xlsx文件。 –

+0

好的,感謝您的輸入@John Y.截至目前,我的腳本正在成功創建來自原始csv文件的.xlsx文件。但是,如果我不能使用xlwt創建xlsx文件,我將需要啓動我的項目。對於如何處理我的任務,您有任何建議: 也就是說,要獲取具有摩擦數據的csv文件,將數據轉換爲不同的單位,然後輸出新的數據集 – Mmoon

回答

0

xlutils.copy是一個模塊。

嘗試這種情況:

from xlutils.copy import copy 

然後

workbookCopy = copy(workbook) 

更多信息:http://xlutils.readthedocs.io/en/latest/copy.html

+0

我現在收到一個新的錯誤: AttributeError:'工作簿'對象沒有'datemode'屬性 – Mmoon

+0

這是一個不同的問題 - 如果我回答了這個問題,您應該將其標記爲答案。 工作簿的文檔沒有指出datemode是一個屬性,所以你爲什麼會認爲它是? http://xlsxwriter.readthedocs.io/workbook.html –