从现有工作簿表中删除行和列

时间:2020-05-19 13:35:08

标签: python excel openpyxl

我正在尝试从sheet中删除所有填充行,除了前三列和所有从坐标(U-AA)开始的列。除了最后的标题外,我必须删除所有填写的信息。如何删除我不了解的列,但是当我运行脚本删除行时,只剩下信息了,只删除样式。如何正确执行此类操作?

class DownloadRfiExcelFile(APIView):
    """
    Download rfi excel file to user
    """
    def get(self, request, format=None, **kwargs):
        file = default_storage.url('test.xlsx')
        wb = load_workbook(filename=file)

        response = HttpResponse(content_type='application/vnd.ms-excel')
        response['Content-Disposition'] = 'attachment; filename="test.xlsx"'
        sheet = wb["RT"]
        for rowNum in range(3, 1114):
                sheet.delete_rows(rowNum)
        for col in sheet.iter_cols():
            for cell in col:
                # delete from U to AA row
        wb.save(response)
        return response

1 个答案:

答案 0 :(得分:2)

要删除rowscolumns,只需使用:

  • sheet.delete_rows({first_row}, {amount})
  • sheet.delete_cols({first_col}, {amount})

请相应地在openpyxl documentation中阅读更多信息。请注意,列用整数表示,A == 1, B ==2依此类推。

import string

def col2num(col):
    # Utility function to convert culomn letters to numbers

    num = 0
    for c in col:
        if c in string.ascii_letters:
            num = num * 26 + (ord(c.upper()) - ord('A')) + 1
    return num

# Setting initial values for deletion
starting_row = 4
starting_col = col2num('U')
last_col = col2num('AA')

# Deleting rows and columns
sheet.delete_rows(starting_row, sheet.max_row-starting_row)
sheet.delete_cols(starting_col, last_col-starting_col)