Python win32com - 从文本框读取文本到单元格?

0 投票
3 回答
3776 浏览
提问于 2025-04-17 00:07

我想从Excel文件中的一个文本框里读取文字,并把这个值保存到一个变量里。现在我遇到的问题是,读取这个文本框的内容。虽然我尝试了好几种方法,这种方法看起来最有希望,因为它没有报错,但最终也没有得到我想要的结果。欢迎大家提供建议。下面是我的代码。

import win32com.client as win32 
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open("C:\\users\\khillstr\\Testing\\Scripts\\Book1.xlsx")
excel.Visible = False

ws = wb.Worksheets

canvas = excel.ActiveSheet.Shapes

for shp in canvas.CanvasItems:
    if shp.TextFrame.Characters:
        print shp.TextFrame.Characters
    else:
        print "no"

3 个回答

0
import win32com.client as win32

file_name = 'path_to_excel'

excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(self.file_name)
excel.Visible = False

sheet = wb.Worksheets(1)
deep = lambda r,c: sheet.Cells(r,c)
print(deep(row_num,col_num))

excel.Application.Quit()

这段代码会打开一个位于 'path_to_excel' 的 Excel 文件,并读取一个特定的单元格,这个单元格的位置是由行号(Row_Number = row_num)和列号(Column_Number = col_num)决定的。

1

Canvas 是和 Excel 文件中的图形有关的东西。我觉得你想要的是访问单元格。下面的代码会把每一行打印出来,格式是一个元组。

import win32com.client as win32 
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open("C:\\users\\khillstr\\Testing\\Scripts\\Book1.xlsx")
excel.Visible = False

sheet = wb.Worksheets(1)

for row in sheet.UsedRange.Value:
  print row
0

要获取工作表上文本框里的文字,你需要使用 shp.TextFrame.Characters.Caption。因为 Characters 方法返回的是一个 Characters 对象,而不是简单的字符串。

撰写回答