2017-06-21 18 views
1

Excelファイルを1000のセクションに分割するプログラムを作成しています。xlsxwriterが2番目のExcelファイルを作成しないため、2番目のExcelファイルを作成できないようですファイル。XLSXWriterが2番目のExcelファイルの作成を拒否する

from os.path import join, dirname, abspath 
from xlrd.sheet import ctype_text 
import csv 
import os 
import sys 
import xlrd 
import xlsxwriter 
import xlwt 

file_paths = sys.argv[1:] 
draganddrop = ''.join(file_paths) 
beginGrab = 0 
counting = 0 
endGrab = 1000  
thousands = 0 

if draganddrop == "": 
    fileName = raw_input("\nInput the file with extension\n>")  
else: 
    fileName = draganddrop 

stopPoint = fileName.index('.') 
prepRev = fileName[stopPoint:] 
preName = fileName[:stopPoint] 

if prepRev == ".csv": 
    excelFile = xlsxwriter.Workbook(preName + '.xlsx') 
    worksheet = excelFile.add_worksheet() 
    with open(fileName,'rb') as f: 
     content = csv.reader(f) 
     for index_col, data_in_col in enumerate(content): 
      for index_row, data_in_cell in enumerate(data_in_col): 
       worksheet.write(index_col,index_row,data_in_cell) 
    excelFile.close() 
    fileName = (preName + '.xlsx') 
    delMe = 1 
    print("Temporary Convert to xlsx done.\n") 

stopPoint = fileName.index('.') 
prepRev = fileName[0:stopPoint] 
fname = join(dirname(abspath(__file__)), fileName) 
xl_workbook = xlrd.open_workbook(fname) 
sheet_names = xl_workbook.sheet_names() 
xl_sheet = xl_workbook.sheet_by_name(sheet_names[0]) 
book = xlwt.Workbook(encoding="utf-8") 
worksheet = book.add_sheet("Results", cell_overwrite_ok=True) 

workbook = xlrd.open_workbook(fileName) 
for sheet in workbook.sheets(): 
    for row in range(sheet.nrows): 
     row = int(row) 

if(int(row)>1000): 
    subDivide = int(row)/1000 
    while(thousands != subDivide + 1): 
     thousands = thousands + 1 
     counting = 0 
     totalName = preName + "_" + str(thousands) + ".xlsx" 
     print(totalName) 
     excelFile = xlsxwriter.Workbook(str(totalName)) 
     worksheet = excelFile.add_worksheet() 
     with open(totalName,'rb') as f: 
      col = xl_sheet.col_slice(0,1,10101010) 
      for idx, cell_obj in enumerate(col, start=beginGrab): 
       counting = counting + 1 
       if(counting == 1000): 
        break     
       cell_type_str = ctype_text.get(cell_obj.ctype, 'unknown type') 
       cell_obj_str = str(cell_obj) 
       telePhone = (cell_obj_str[7:19]) 
       worksheet.write(idx+1, 0, "1" + telePhone)   
     worksheet.write(0,0, "Telephone Number") 
     beginGrab = thousands * 1000 
     endGrab = beginGrab + 1000 
     excelFile.close() 
     excelFile = None 

else: 
    print("Mate, this is Tiny!") 
print ("Ding! Job Done!") 

私はこれをダッキングしていて、どこにいるのか分からない。

編集:

SOLVED !!

シートを作成して閉じた後、プログラムはシートを把握できます。私はおそらくこれについてgitの問題を作ります。

これを閉じると、同じ情報が含まれていても開くことができます。

excelFile = xlsxwriter.Workbook(totalName) 
    worksheet = excelFile.add_worksheet() 
    with open(fileName,'rb') as f: 
+0

あなたが得たエラーのトレースバックを投稿できますか? (私は答えましたが、あなたが持っている唯一の問題ではないと確信しています) –

+0

'ファイル" /home/nmenard/Documents/Haircuttery/FileSplit.py "、行62、に' 'ファイル名またはディレクトリ名: 'OyVey_2.xlsx' これは正しいですか? – GarnetSunset

+0

@GarnetSunset '/ my/file/OyVey_2.xlsx'のようなフルパスを使用するとどうなりますか?ファイルが存在し、存在していることを確認してください(_2拡張子を使用していますか?) – David542

答えて

1

その行はおそらくあなたがあなたのファイルを読み戻すことができない理由であり、あなたのスクリプトがクラッシュ:

fname = join(dirname(abspath('__file__')), '%s' % fileName) 

'__file__'は引用符を持つべきではありません。私がやるだろう:

fname = join(dirname(abspath(__file__)), fileName) 
+0

非常に良い追加、ありがとう、しかし、何らかの理由でこれはまだ動作しませんでした。 – GarnetSunset

2

save/closeラインは、whileループ内にある必要はありませんか?それ以外の場合は、最初または最後の項目のみを保存するように見えます:

while(thousands != subDivide + 1): 
    # write file 
    excelFile.close() 
+0

私はそれを戻しました、そして、私はまだ同じエラーを見ています。メインでコードを編集して修正を加えましょう。 – GarnetSunset

関連する問題