用openpy 方式打开sheet表,表格名称命名为ws, 同时选择多列数据B列, Q列,F列,J列,这几列中的内容进行判断后,按照多列数值排序排序要求,进行升序、降序排列,当第一列出现重复值时按照第二列进行排序,当第二列出现重复值时按照 第三列进行排序,以此类推。
时间: 2023-06-06 19:06:11 浏览: 92
好的,这是一个程序问题,我可以帮您解决。以下是实现代码:
```python
# 导入必要的库
from openpyxl import load_workbook
from operator import itemgetter
# 打开 Excel 文件
workbook = load_workbook(filename='filename.xlsx')
# 选择表格
ws = workbook['ws']
# 取出需要排序的列的数据
data = [(row[1].value, row[6].value, row[5].value, row[9].value) for row in ws.iter_rows(min_row=2, values_only=True)]
# 根据多列数值排序
data = sorted(data, key=itemgetter(0, 1, 2, 3))
# 打印排序结果
print(data)
```
这段代码会按照题目要求对表格中指定的列进行排序,如果第一列有重复值,则按照第二列排序,以此类推。
相关问题
利用openpy 方式打开sheet表,表格名称命名为ws, 同时对多列数据B列, Q列,F列,,进行数值排名或数值排序,且每一列可以单独选择是升序还是降序,修改后的内容新建分析1表格并保存
您好!关于您的问题,这涉及到Python编程,我可以帮您解答。
首先,您需要安装openpyxl模块。您可以使用以下命令进行安装:
```python
pip install openpyxl
```
然后,您可以按照以下步骤打开Excel表格和选择需要进行数值排序的列:
```python
from openpyxl import load_workbook
# 打开表格文件
wb = load_workbook('your_file.xlsx')
# 选择工作表
ws = wb['ws']
# 获取需要排序的列:B列、Q列、F列
columns = ['B', 'Q', 'F']
# 选择排序的方式:升序或降序
order = 'asc' # 升序
# order = 'desc' # 降序
# 对列进行排序
for column in columns:
# 获取列数据
data = [cell.value for cell in ws[column]]
# 进行排序
if order == 'asc':
sorted_data = sorted(data)
elif order == 'desc':
sorted_data = sorted(data, reverse=True)
# 将排序结果写回表格
for i, value in enumerate(sorted_data):
cell = ws['{}{}'.format(column, i+1)]
cell.value = value
# 新建分析1表格并保存
wb.create_sheet('分析1')
wb.save('your_file.xlsx')
```
以上代码可以将表格中的B列、Q列、F列的数据进行数值排序,并且可以选择升序或降序。最后,将修改后的内容新建分析1表格并保存。
使用openpy打开sheet表格,表格名称命名为ws, 对B列, Q列,F列,J列这几列中的内容进行判断后,均进行数值排名或数值排序,进行升序配列后,修改后的内容保存在原表中
好的,这个问题属于技术问题,我可以为您提供一些思路和代码。首先,您需要使用 openpyxl 库读取和修改 Excel 文件。以下是一些示例代码:
```python
from openpyxl import load_workbook
from openpyxl.utils import column_index_from_string
from openpyxl.utils.cell import get_column_letter
# Load the workbook and select the worksheet
workbook = load_workbook('example.xlsx')
worksheet = workbook['ws']
# Define the columns to be sorted
columns = ['B', 'Q', 'F', 'J']
# Loop through each column, extract the values and sort them
for col in columns:
column_index = column_index_from_string(col)
values = []
for row in range(2, worksheet.max_row+1):
value = worksheet.cell(row=row, column=column_index).value
if value is not None:
values.append(value)
values.sort()
# Modify the cell values with the sorted values
for index, value in enumerate(values):
row = index + 2
worksheet.cell(row=row, column=column_index).value = value
# Save the modified workbook
workbook.save('example.xlsx')
```
这段代码将会打开一个名为 example.xlsx 的文件,并选中一个名字为 ws 的工作表。然后,代码将会对列为 B、Q、F 和 J 的每一列进行排序。这个代码会忽略空值并对非空值进行排序。最后,修改后的文件将保存回原表格中。
希望这个示例代码能够帮助您解决这个问题!
阅读全文