How to save an Excel worksheet as CSV
The most basic examples using the two libraries described line by line:
- Open the xls workbook
- Reference the first spreadsheet
- Open in binary write the target csv file
- Create the default csv writer object
- Loop over all the rows of the first spreadsheet
- Dump the rows into the csv
import xlrd
import csv
with xlrd.open_workbook('a_file.xls') as wb:
sh = wb.sheet_by_index(0) # or wb.sheet_by_name('name_of_the_sheet_here')
with open('a_file.csv', 'wb') as f: # open('a_file.csv', 'w', newline="") for python 3
c = csv.writer(f)
for r in range(sh.nrows):
c.writerow(sh.row_values(r))
import openpyxl
import csv
wb = openpyxl.load_workbook('test.xlsx')
sh = wb.active
with open('test.csv', 'wb') as f: # open('test.csv', 'w', newline="") for python 3
c = csv.writer(f)
for r in sh.rows:
c.writerow([cell.value for cell in r])
Using pandas
will be a bit shorter:
import pandas as pd
df = pd.read_excel('my_file', sheetname='my_sheet_name') # sheetname is optional
df.to_csv('output_file_name', index=False) # index=False prevents pandas to write row index
# oneliner
pd.read_excel('my_file', sheetname='my_sheet_name').to_csv('output_file_name', index=False)