Mam plik Excel zawierający około 400 arkuszy, z których 375 muszę zapisać jako pliki CSV. Próbowałem już rozwiązanie VBA, ale w programie Excel występują problemy z otwieraniem tego skoroszytu.Python: czytanie dużych arkuszy programu Excel przy użyciu Openpyxl
Stworzyłem skrypt Pythona, aby to zrobić. Jednak szybko zużywa całą dostępną pamięć i prawie przestaje działać po wyeksportowaniu 25 arkuszy. Czy ktoś ma sugestię, w jaki sposób mogę poprawić ten kod?
import openpyxl
import csv
import time
print(time.ctime())
importedfile = openpyxl.load_workbook(filename = "C:/Users/User/Desktop/Giant Workbook.xlsm", data_only = True, keep_vba = False)
tabnames = importedfile.get_sheet_names()
substring = "Keyword"
for num in tabnames:
if num.find(substring) > -1:
sheet=importedfile.get_sheet_by_name(num)
name = "C:/Users/User/Desktop/Test/" + num + ".csv"
with open(name, 'w', newline='') as file:
savefile = csv.writer(file)
for i in sheet.rows:
savefile.writerow([cell.value for cell in i])
file.close()
print(time.ctime())
Każda pomoc zostanie doceniona.
Dzięki
EDIT: używam Windows 7 i Pythona 3.4.3. Jestem także otwarty na rozwiązania w R, VBA lub SPSS.
Nie potrzebujesz pliku file.close() po bloku o numerze – joeButler