Python 更改现有Excel工作簿中列中内容的格式

Python 更改现有Excel工作簿中列中内容的格式,python,xlrd,xlwt,openpyxl,Python,Xlrd,Xlwt,Openpyxl,我想更改Excel工作簿中内容的格式 环境:赢7分;Python 2.76 我想将A、B和C列更改为所需的格式。我得到的是: from openpyxl import Workbook from openpyxl import load_workbook wb = load_workbook('c:\\oldfile.xls') ws = wb.active d = ws.cell(column = 0) # or 1, 2, 3 d.style = Style(font=Font(bold=

我想更改Excel工作簿中内容的格式

环境:赢7分;Python 2.76

我想将A、B和C列更改为所需的格式。我得到的是:

from openpyxl import Workbook
from openpyxl import load_workbook

wb = load_workbook('c:\\oldfile.xls')
ws = wb.active
d = ws.cell(column = 0) # or 1, 2, 3
d.style = Style(font=Font(bold=False),
                borders=Borders(left=Border(border_style='none'),
                                right=Border(border_style='none'),
                                top=Border(border_style='none'),
                                bottom=Border(border_style='none')),
                color=Color(Color.RED))


wb.save('c:\\oldfile.xls')
显然,指示列的方式是错误的。因此,我的问题是:

  • 如何更改整列内容的格式
  • 由于“openpyxl”只处理.xlsx和.xlsm的格式,如果原始文件是.xls(将文件转换为.xlsx),如何更改格式
  • 谢谢


    这是使用“easyxf”,但它格式化了所有内容



    我不知道有任何Python实用程序会将
    .xls
    文件转换为
    .xlsx
    。您可以简单地组合这两个库:使用
    xlrd
    读取,使用
    openpyxl
    xlsxwriter
    写入
    openpyxl
    确实支持使用
    ColumnDimension
    RowDimension
    对象格式化整列和整行。

    好吧,事实上,Find只是指出需要在编写时格式化列,这是可以做到的

    将它们放在一起可能会很有用:

    import xlwt
    from xlrd import open_workbook
    from xlutils.copy import copy
    from xlwt import easyxf
    
    old_file = open_workbook('c:\\oldfile.xls',formatting_info=True)
    old_sheet = old_file.sheet_by_index(0)
    
    new_file = copy(old_file)
    new_sheet = new_file.get_sheet(0)
    
    style = easyxf('font: bold true;'
                   'borders: left no_line, right no_line, top no_line, bottom no_line;'
                   'font: color red')
    
    row_data = []
    
    for row_index in range(old_sheet.nrows):
        rows = old_sheet.row_values(row_index)
        row_data.append(rows)
    
    for row_index, row in enumerate(row_data):
        for col_index, cell_value in enumerate(row):
    
            # indicate the columns want to be formatted
            if col_index == 0 or col_index == 1:
                new_sheet.write(row_index, col_index, cell_value, style)
            else:
                new_sheet.write(row_index, col_index, cell_value)
    
    new_file.save('c:\\newfile.xls')  
    
    import xlwt
    from xlrd import open_workbook
    from xlutils.copy import copy
    from xlwt import easyxf
    
    old_file = open_workbook('c:\\oldfile.xls',formatting_info=True)
    old_sheet = old_file.sheet_by_index(0)
    
    new_file = copy(old_file)
    new_sheet = new_file.get_sheet(0)
    
    style = easyxf('font: bold true;'
                   'borders: left no_line, right no_line, top no_line, bottom no_line;'
                   'font: color red')
    
    row_data = []
    
    for row_index in range(old_sheet.nrows):
        rows = old_sheet.row_values(row_index)
        row_data.append(rows)
    
    for row_index, row in enumerate(row_data):
        for col_index, cell_value in enumerate(row):
    
            # indicate the columns want to be formatted
            if col_index == 0 or col_index == 1:
                new_sheet.write(row_index, col_index, cell_value, style)
            else:
                new_sheet.write(row_index, col_index, cell_value)
    
    new_file.save('c:\\newfile.xls')