我正在使用 Python 3.4,并且正在编写一个简短的脚本。我有一个可执行文件,它获取软件的输出并输出一堆包含请求数据的 csv 文件。我创建了一个 Excel (xlsx) 文件作为模板。它有一个根据特定要求定制的图表。
我想在每个 csv 文件中获取一定范围的数据,然后将它们输入到我已经创建的现有 Excel 模板中,并使用唯一的文件名保存它。本质上是迭代这个过程。
每个 csv 文件都有一个唯一的名称。我的目标是帮助自动化创建图表。有时这可能最终会变成数百张图表。我已经搜索了很多关于如何做到这一点的信息,但几乎没有帮助。
我将再次启动脚本,它将运行每个 csv 文件(无论是 5 个还是 500 个),然后复制数据(始终位于相同单元格中的特定范围),然后将其粘贴到模板 xlsx 文件中我已创建并使用与 csv 类似的名称保存它,但它的扩展名为 .xlsx。
我不知道这是否是最好的方法,或者我是否应该创建一个 csv 模板来代替它复制到的模板。
非常感谢任何帮助,谢谢。
最佳答案
第一种方法
如果您的最终目标是根据 csv 中的可用数据生成图表,那么您可以使用 csvReader 读取数据并使用 matplotlib 绘制图表。
简单的例子:
Sample csv file:
1,10,45
2,20,30
3,30,90
4,40,80
import csv
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
keys = ['Col1','Col2','Col3']
col1 = []
col2 = []
col3 = []
fd = open('sample.csv','r')
reader = csv.DictReader(fd,fieldnames=keys)
for row in reader:
col1.append(int(row['Col1']))
col2.append(int(row['Col2']))
col3.append(int(row['Col3']))
pp = PdfPages("Sample.pdf")
plt.title("Col1 Vs Col2")
plt.xlabel("X-Values")
plt.ylabel("Y-Values")
plt.plot(col1,col2,label="Label 1",marker = "*")
legend = plt.legend(loc='best', shadow=True, fontsize=6)
legend.get_frame().set_facecolor('#00FFCC')
plt.grid(True)
plt.savefig(pp,format='pdf')
plt.clf()
plt.title("Col1 Vs Col3")
plt.xlabel("X-Values")
plt.ylabel("Y-Values")
plt.plot(col1,col3,label="Lable 2",marker = "*")
legend = plt.legend(loc='best', shadow=True, fontsize=6)
legend.get_frame().set_facecolor('#00FFCC')
plt.grid(True)
plt.savefig(pp,format='pdf')
plt.clf()
pp.close()
引用文献:
第二种方法
可以使用xlrd、xlwt和xlutils对excel文件进行操作
使用 csvReader 读取数据,使用 xlutils 复制现有模板,对其进行编辑并再次保存
引用:
关于python - 如何使用 Python 将 CSV 数据复制到现有 xlsx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29847674/