如何用Python在Excel名称管理器中添加多个非连续单元格?
在Python中给Excel名称管理器添加多区域非连续单元格定义
问题说明
需要在Excel名称管理器的单个名称下关联多个非连续的单元格/单元格区域,尝试过openpyxl和XlsxWriter库,但仅能定义单个单元格或连续区域,希望实现类似以下效果的复杂名称定义:
workbook.define_name('complex_range','=Sheet1!$B$3:$E$8;Sheet1!$B$12:$C$16;Sheet1!$B$19;Sheet1!$H$12:$I$16')
解决方案
使用XlsxWriter实现
XlsxWriter本身支持通过分号分隔多个非连续区域来定义名称,直接按预想的写法即可,示例代码如下:
import xlsxwriter # 创建工作簿和工作表 workbook = xlsxwriter.Workbook('multi_range.xlsx') worksheet = workbook.add_worksheet('Sheet1') # 定义包含多个非连续区域的名称 workbook.define_name('complex_range', '=Sheet1!$B$3:$E$8;Sheet1!$B$12:$C$16;Sheet1!$B$19;Sheet1!$H$12:$I$16') # 关闭工作簿 workbook.close()
使用openpyxl实现
openpyxl的DefinedName类同样支持传入分号分隔的多区域字符串作为attr_text参数,示例代码如下:
from openpyxl import Workbook from openpyxl.workbook.defined_name import DefinedName # 创建工作簿和工作表 wb = Workbook() ws = wb.active ws.title = 'Sheet1' # 定义包含多个非连续区域的名称 complex_range = DefinedName('complex_range', attr_text='Sheet1!$B$3:$E$8;Sheet1!$B$12:$C$16;Sheet1!$B$19;Sheet1!$H$12:$I$16') wb.defined_names.append(complex_range) # 保存工作簿 wb.save('multi_range_openpyxl.xlsx')
内容的提问来源于stack exchange,提问作者Nten0
相关产品推荐
相关产品推荐

