如何使用过滤器的“从 A 到 Z 排序”对 XlsxWriter 中的表格进行排序?

问题描述 投票:0回答:2

最近,我发现了适用于 Python 的 XlsxWriter(我确实很喜欢它!),并且开始处理一些电子表格。我需要以编程方式创建一个与其他人手动创建的电子表格相同的电子表格。除了自动过滤器中的排序表之外,我设法创建了我需要的一切。基本上,我想创建这样的东西: 我不知道怎么办。我检查了文档(12),没有找到任何有关排序的信息。我现在做的是:

worksheet.autofilter(1, 0, known_lenght, known_width)

这会导致自动筛选箭头出现在标题单元格的右下角,但

worksheet.autofilter()
似乎缺乏排序功能。我是否遗漏了某些内容,或者没有选项可以在 XlsxWriter 中创建自动过滤器并设置排序?谢谢!

python excel xlsxwriter
2个回答
11
投票

我是否遗漏了某些内容,或者没有选项可以在 XlsxWriter 中创建自动过滤器并设置排序?

Excel 中的数据排序是在运行时完成的,与文件格式无关。因此 XlsxWriter 不支持它。

您应该在 Python 中对数据进行排序,然后将其写入自动过滤区域。

但是,这不会将自动过滤器箭头设置为“已排序”。 XlsxWriter 目前不支持此功能。


0
投票

解锁受密码保护的工作表中的所有单元格后,使用 xlsxwriter 对列和行进行排序和过滤

import openpyxl
import xlsxwriter

# Load the workbook and sheet
workbook = openpyxl.load_workbook("C:/Users/xyz/Downloads/DEMO_I.xlsx")
sheet = workbook["DEMO_I"]

# Create a new Excel workbook and worksheet using XlsxWriter
output_file = "C:/Users/xyz/Downloads/DEMO_I_protected.xlsx"
workbook_xlsx = xlsxwriter.Workbook(output_file)
worksheet_xlsx = workbook_xlsx.add_worksheet()

# Copy data from existing worksheet to new worksheet
for row_num, row in enumerate(sheet.iter_rows(values_only=True), start=1):
    for col_num, value in enumerate(row, start=1):
        worksheet_xlsx.write(row_num - 1, col_num - 1, value)

# Set unlocked format for all cells
unlocked_format = workbook_xlsx.add_format({'locked': False})
worksheet_xlsx.protect("1234", options={'format_columns': True, 'autofilter': True, 'sort': True})  # Protect the worksheet with autofilter and sorting

# Apply autofilter to all columns
num_rows = sheet.max_row
num_cols = sheet.max_column
worksheet_xlsx.autofilter(0, 0, num_rows - 1, num_cols - 1)

# Apply sort to all columns
worksheet_xlsx.unprotect_range('A1:D12', 'MyRange')

# Save the XlsxWriter workbook
workbook_xlsx.close()
© www.soinside.com 2019 - 2024. All rights reserved.