Python win32com - 将文本框中的文本读取到单元格?

时间:2011-08-22 16:37:54

标签: python excel pywin32 win32com

我想从Excel文件的文本框中读取文本并将该值保存到变量中。我遇到的问题是阅读TextBox。我已经尝试了几种方法,这个方法显示了最大的承诺,因为它不会产生错误,但它也不会产生预期的结果。任何建议表示赞赏。请参阅下面的代码。

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 :(得分: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

答案 1 :(得分:0)

要在工作表上的文本框对象中获取文本,您需要使用shp.TextFrame.Characters.Caption,因为Characters方法返回Characters对象而不是字符串。

答案 2 :(得分: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'并读取位于(Row_Number = row_num,Column_Number = col_num)

的单元格