我正在尝试从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
答案 0 :(得分:2)
要删除rows
和columns
,只需使用:
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)