将Excel与Python连接

0 投票
2 回答
3744 浏览
提问于 2025-04-16 22:55

使用下面的代码,我可以让数据打印出来。

我该如何把代码改成用xlrd这个库呢?

我该如何修改这段代码,以便使用一个已经打开并且可见的xls文件?

也就是说,文件是先手动打开的,然后脚本再运行。

接着,数据会被更新。

最后,这些数据会被推送到Mysql数据库中。

import os
from win32com.client import constants, Dispatch
import numpy as np

#----------------------------------------
# get data from excel file
#----------------------------------------
XLS_FILE = "C:\\xtest\\example.xls"
ROW_SPAN = (1, 16)
COL_SPAN = (1, 6)
app = Dispatch("Excel.Application")
app.Visible = True
ws = app.Workbooks.Open(XLS_FILE).Sheets(1)
xldata = [[ws.Cells(row, col).Value 
              for col in xrange(COL_SPAN[0], COL_SPAN[1])] 
             for row in xrange(ROW_SPAN[0], ROW_SPAN[1])]
#print xldata
a = np.asarray(list(xldata), dtype='object')
print a

2 个回答

0

如果你想操作一个已经打开的文件,为什么不试试使用COM呢?

1

如果你是说想要修改当前的文件,我可以很肯定地说这几乎是不可能的,而且我100%确定这是个坏主意。要修改一个文件,你需要有写入权限。Excel会创建一个文件锁,以防止同时和异步的编辑。如果一个文件在Excel中打开,那么唯一能修改这个文件的就是……Excel自己。

如果你是说想要读取当前在编辑器中的文件,那是可以的——你通常可以获取正在使用的文件的读取权限,但这样做也不太明智——如果用户没有保存,那么用户看到的数据和你在磁盘上看到的数据就会不一样。

虽然我不太喜欢VB,但对于这个应用来说,使用它会更靠谱——可以用宏直接从Excel将数据插入到MySQL中。个人建议你创建一个只有插入权限的用户,然后可以参考这个教程

撰写回答