Python и Excel

Введение

Примеры

  • Поместите данные списка в файл Excel.

    import os, sys
    from openpyxl import Workbook
    from datetime import datetime
    
    dt = datetime.now()
    list_values = [["01/01/2016", "05:00:00", 3], \
                   ["01/02/2016", "06:00:00", 4], \
                   ["01/03/2016", "07:00:00", 5], \
                   ["01/04/2016", "08:00:00", 6], \
                   ["01/05/2016", "09:00:00", 7]]
    
    # Create a Workbook on Excel:
    wb = Workbook()
    sheet = wb.active
    sheet.title = 'data'
    
    # Print the titles into Excel Workbook:
    row = 1
    sheet['A'+str(row)] = 'Date'
    sheet['B'+str(row)] = 'Hour'
    sheet['C'+str(row)] = 'Value'
    
    # Populate with data
    for item in list_values:
        row += 1
        sheet['A'+str(row)] = item[0]
        sheet['B'+str(row)] = item[1]
        sheet['C'+str(row)] = item[2]
    
    # Save a file by date:
    filename = 'data_' + dt.strftime("%Y%m%d_%I%M%S") + '.xlsx'
    wb.save(filename)
    
    # Open the file for the user:
    os.chdir(sys.path[0])
    os.system('start excel.exe "%s\\%s"' % (sys.path[0], filename, ))

  • OpenPyXL

    OpenPyXL представляет собой модуль для управления и создания xlsx/xlsm/xltx/xltm книги в памяти.

    Управление и чтение существующей рабочей книги:

     import openpyxl as opx
    #To change an existing wookbook we located it by referencing its path
    workbook = opx.load_workbook(workbook_path)
    
     

    load_workbook() содержит параметр read_only , установив это значение True загрузит книгу , как read_only, это полезно при чтении больших xlsx файлов:

     workbook = opx.load_workbook(workbook_path, read_only=True)
    
     

    После того, как вы загрузили книгу в память, вы можете получить доступ к отдельным листам с помощью workbook.sheets

     first_sheet = workbook.worksheets[0]
    
     

    Если вы хотите , чтобы указать имя имеющегося листа, вы можете использовать workbook.get_sheet_names() .

     sheet = workbook.get_sheet_by_name('Sheet Name')
    
     

    И, наконец, строки листа можно получить с помощью sheet.rows . Чтобы перебрать строки на листе, используйте:

     for row in sheet.rows:
        print row[0].value
    
     

    Поскольку каждая row в rows приведен список Cell с, использовать Cell.value , чтобы получить содержимое ячейки.

    Создание новой рабочей книги в памяти:

     #Calling the Workbook() function creates a new book in memory
    wb = opx.Workbook()
    
    #We can then create a new sheet in the wb
    ws = wb.create_sheet('Sheet Name', 0) #0 refers to the index of the sheet order in the wb
    
     

    Несколько вкладок свойство может быть изменено с помощью openpyxl, например , в tabColor :

     ws.sheet_properties.tabColor = 'FFC0CB'
    
     

    Чтобы сохранить созданную книгу, мы заканчиваем:

     wb.save('filename.xlsx') 
  • Создавайте таблицы Excel с помощью xlsxwriter

    import xlsxwriter
    
    # sample data
    chart_data = [
        {'name': 'Lorem', 'value': 23},
        {'name': 'Ipsum', 'value': 48},
        {'name': 'Dolor', 'value': 15},
        {'name': 'Sit', 'value': 8},
        {'name': 'Amet', 'value': 32}
    ]
    
    # excel file path
    xls_file = 'chart.xlsx'
    
    # the workbook
    workbook = xlsxwriter.Workbook(xls_file)
    
    # add worksheet to workbook
    worksheet = workbook.add_worksheet()
    
    row_ = 0
    col_ = 0
    
    # write headers
    worksheet.write(row_, col_, 'NAME')
    col_ += 1
    worksheet.write(row_, col_, 'VALUE')
    row_ += 1
    
    # write sample data 
    for item in chart_data:
        col_ = 0
        worksheet.write(row_, col_, item['name'])
        col_ += 1
        worksheet.write(row_, col_, item['value'])
        row_ += 1
    
    # create pie chart
    pie_chart = workbook.add_chart({'type': 'pie'})
    
    # add series to pie chart
    pie_chart.add_series({
        'name': 'Series Name',
        'categories': '=Sheet1!$A$3:$A$%s' % row_,
        'values': '=Sheet1!$B$3:$B$%s' % row_,
        'marker': {'type': 'circle'}
    })
    # insert pie chart
    worksheet.insert_chart('D2', pie_chart)
    
    # create column chart
    column_chart = workbook.add_chart({'type': 'column'})
    
    # add serie to column chart
    column_chart.add_series({
        'name': 'Series Name',
        'categories': '=Sheet1!$A$3:$A$%s' % row_,
        'values': '=Sheet1!$B$3:$B$%s' % row_,
        'marker': {'type': 'circle'}
    })
    # insert column chart
    worksheet.insert_chart('D20', column_chart)
    
    workbook.close()
    
     

    Результат:

    

  • Прочитайте данные Excel, используя модуль xlrd

    Библиотека Python xlrd предназначена для извлечения данных из файлов электронных таблиц Microsoft Excel (tm).

    Монтаж:-

     pip install xlrd
     

    Или вы можете использовать файл setup.py из pypi

    https://pypi.python.org/pypi/xlrd

    Чтение листа первенствовать: - Импорт xlrd модуля и открытый первенствует файл , используя метод open_workbook ().

     import xlrd
    book=xlrd.open_workbook('sample.xlsx')
     

    Проверьте количество листов в Excel

     print book.nsheets
     

    Распечатайте названия листов

     print book.sheet_names()
     

    Получить лист на основе индекса

     sheet=book.sheet_by_index(1)
     

    Прочитайте содержимое ячейки

     cell = sheet.cell(row,col) #where row=row number and col=column number
    print cell.value #to print the cell contents
    
     

    Получить количество строк и количество столбцов в листе Excel

     num_rows=sheet.nrows
    num_col=sheet.ncols
     

    Получить лист Excel по имени

     sheets = book.sheet_names()
    cur_sheet = book.sheet_by_name(sheets[0]) 
  • Форматировать файлы Excel с помощью xlsxwriter

    import xlsxwriter
    
    # create a new file 
    workbook = xlsxwriter.Workbook('your_file.xlsx')
    
    # add some new formats to be used by the workbook 
    percent_format = workbook.add_format({'num_format': '0%'})
    percent_with_decimal = workbook.add_format({'num_format': '0.0%'})
    bold = workbook.add_format({'bold': True})
    red_font = workbook.add_format({'font_color': 'red'})
    remove_format = workbook.add_format()
    
    # add a new sheet 
    worksheet = workbook.add_worksheet() 
    
    # set the width of column A 
    worksheet.set_column('A:A', 30, )
    
    # set column B to 20 and include the percent format we created earlier 
    worksheet.set_column('B:B', 20, percent_format)
    
    # remove formatting from the first row (change in height=None) 
    worksheet.set_row('0:0', None, remove_format)
    
    workbook.close()

Синтаксис

Параметры

Примечания