我是比较新的编程/ Python的,所以我想感谢所有帮助我可以得到的。 我想一个Excel文件保存为通过COM使用Excel特定的格式。 下面是代码:
import win32com.client as win32
def excel():
app = 'Excel'
x1 = win32.gencache.EnsureDispatch('%s.Application' % app)
ss = x1.Workbooks.Add()
sh = ss.ActiveSheet
x1.Visible = True
sh.Cells(1,1).Value = 'test write'
ss.SaveAs(Filename="temp.xls", FileFormat=56)
x1.Application.Quit()
if __name__=='__main__':
excel()
我的问题是我怎么指定的FileFormat如果我不明确知道它的代码? 通过我找到有关的FileFormat对象的引用文档浏览。 我对如何访问无能XlFileFormat对象并在某种程度上,我可以找到它的枚举值导入。
谢谢!
这个问题有点陈旧,但对于那些达到从谷歌这个页面(像我一样)我溶液通过访问该常数win32com.client.constants
而不是对象的应用程序对象本身是由Eric建议 。 这允许您使用枚举常量就像在VBE:
>>> import win32com.client
>>> xl = win32com.client.gencache.EnsureDispatch('Excel.Application')
>>> C = win32com.client.constants
>>> C.xlWorkbookNormal
-4143
>>> C.xlCSV
6
>>> C.xlErrValue
2015
>>> C.xlThemeColorAccent1
5
此外,除非你手动运行makepy
实用,常数可能无法使用初始化与普通的应用程序可win32com.client.Dispatch(..)
方法,这是我在另一个问题。 使用win32com.client.gencache.EnsureDispatch(..)
作为提问一样)检查并在需要时产生在运行时Python绑定。
我发现这个页面的ActiveState是有益的。
当我用COM访问QuickBooks的,我可以达到下的对象的一个常量构件中定义的常量。 该代码看起来是这样的(你会在第三行位数的):
self._session_manager.OpenConnection2("",
application_name,
QBFC8Lib.constants.ctLocalQBD)
我不知道这是否会工作,但试试这个:
import win32com.client as win32
def excel():
app = 'Excel'
x1 = win32.gencache.EnsureDispatch('%s.Application' % app)
ss = x1.Workbooks.Add()
sh = ss.ActiveSheet
x1.Visible = True
sh.Cells(1,1).Value = 'test write'
ss.SaveAs(Filename="temp.xls", FileFormat=x1.constants.xlWorkbookNormal)
x1.Application.Quit()
if __name__=='__main__':
excel()
与任何格式的努力在X1FileFormat网页,你在你的问题发布到选择替换xlWorkbookNormal。
作为一般规则,我觉得它真的很有用预先写在Excel中的VBA IDE的任何代码。 这样你可以找到你需要你的Python代码中使用常量等所有的值。 您也可以确保的东西会从一个更可控的环境中工作。