Link1133 2022-12-20 18:17 采纳率: 44.4%
浏览 21
已结题

xlwings分拆excel表格提示AttributeError: 'str' object has no attribute 'expand'

xlwings分拆excel表格提示AttributeError: 'str' object has no attribute 'expand'

下面是我的代码和excel表格,这种情况要怎么解决?

import xlwings as xw 
df = pd.read_excel("C:\\Users\\Link\\Desktop\\python数据分析期末报告\\xiugai.xlsx")
df["交易日期"] = pd.to_datetime(df["交易日期"])
df["年"]=df["交易日期"].dt.year
resultPath = 'C:\\Users\\Link\\Desktop\\python数据分析期末报告\\x.xlsx'
df.to_excel(resultPath,index = False)
file_path = 'C:\\Users\\Link\\Desktop\\python数据分析期末报告\\x.xlsx' 
sheet_name = 'sheet1' 
app = xw.App(visible=False,add_book=False)
workbook = app.books.open(file_path) 
worksheet = workbook.sheets[sheet_name] 
value = worksheet.range('A1').expand('年').value 
data = dict() 
for i in range(len(value)): 
    product_name = value[i][12] 
    if product_name not in data: 
        data[product_name] = [] 
    data[product_name].append(value[i]) 
for key,value in data.items(): 
    new_workbook = xw.books.add() 
    new_worksheet = new_workbook.sheets.add(key) 
    new_worksheet['A1'].value = worksheet['A1:H1'].value 
    new_worksheet['A2'].value = value 
    new_workbook.save('{}.xlsx'.format(key)) 
app.quit()
AttributeError                            Traceback (most recent call last)
Input In [21], in <cell line: 8>()
      6 workbook = app.books.open(file_path) 
      7 worksheet = workbook.sheets[sheet_name] 
----> 8 value = worksheet.range('A1').expand('年').value 
      9 data = dict() 
     10 for i in range(len(value)): 

File E:\Anaconda3\lib\site-packages\xlwings\main.py:2025, in Range.expand(self, mode)
   1999 def expand(self, mode='table'):
   2000     """
   2001     Expands the range according to the mode provided. Ignores empty top-left cells (unlike ``Range.end()``).
   2002 
   (...)
   2023     .. versionadded:: 0.9.0
   2024     """
-> 2025     return expansion.expanders.get(mode, mode).expand(self)

AttributeError: 'str' object has no attribute 'expand'

img

  • 写回答

1条回答 默认 最新

  • ShowMeAI 2022-12-20 18:34
    关注

    你在行 8 中将一个字符串作为参数传给了 expand 函数。

    望采纳

    你将 '年' 传递给函数作为一个字符串,但是 expand 函数期望的是一个模式参数,其中模式是 'table', 'down', 'right', 'up' 或 'left' 之一。

    如果你想要扩展区域以包括所有相邻的单元格,则可以将模式设置为 'table':

    value = worksheet.range('A1').expand('table').value
    

    或者,如果你想要仅扩展区域以包括下方的单元格,则可以将模式设置为 'down':

    value = worksheet.range('A1').expand('down').value
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月28日
  • 已采纳回答 12月20日
  • 创建了问题 12月20日

悬赏问题

  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥20 OPENVPN连接问题