2011-08-22 194 views
0

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

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" 

回答

0

要获得在文本框对象中的文本上,你需要使用shp.TextFrame.Characters.Caption作为Characters方法片返回Characters对象,而不是一个字符串。

+0

从逻辑上讲,这是有道理的,但当我尝试时会出错。 运行时错误:'function'对象没有属性'Caption' – KarlJr

+0

在黑暗中拍摄,但尝试'shp.TextFrame2.TextRange' – Banjoe

+0

工作!我发誓我曾尝试过,但在此期间我必须调整其他东西。谢谢你的帮助!! – KarlJr

1

画布与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

奇怪的是,Excel中组形状下其工作表文本框对象。 – Banjoe

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)细胞

+0

嗨,添加一些解释与代码,因为它有助于理解你的代码。只有代码答案是不被接受的。 –

相关问题