我正在使用VBA将Excel工作表另存为CSV文件。宏将其保存为CSv,然后在excel中打开它。我有一个python代码读取文件,由用户选择它(使用tkinter)打开。
有没有办法修改我的python代码来检测打开的csv文件,以便我可以跳过用户选择阶段?我希望它返回文件路径或读取打开的csv文件。这是我的代码的当前版本,如果csv文件在excel中打开,则该代码可用:
import numpy as np
from Tkinter import Tk
from tkFileDialog import askopenfilename
tk=Tk()
tk.withdraw()
filename = askopenfilename()
data = np.genfromtxt(filename, dtype=[('x',float),('y',float)],comments='"', delimiter=',',skip_header=1,missing_values=True)
tk.destroy()
x=data['x']
x = x[np.logical_not(np.isnan(x))]
y=data['y']
y = y[np.logical_not(np.isnan(y))]
print x
print y
答案 0 :(得分:1)
哪个操作系统?如果是Windows,请查看Get name of active Excel workbook from Python。问题本身的代码可以做你想要的:
import win32com.client
xl = win32com.client.Dispatch("Excel.Application")
print(xl.ActiveWorkbook.FullName)
正如那个问题的答案中所提到的,这只会打印最近打开的文件的路径,但在你的情况下,它听起来就像宏正在打开文件,所以它可能会起作用吗?否则,看看实际答案 - 看起来非常完整。