如何从Excel中读取数据并逐行写入文本文件?

2024-04-11

我想编写代码从 Excel 获取数据并将其写入文本文件。这是我的代码:

import xlrd
import os.path
wb = xlrd.open_workbook(os.path.join('D:\TRB 2014 Data','SPS1 demo data.xlsx'))
wb.sheet_names()
sh = wb.sheet_by_index(0)
i = 1

while sh.cell(i,11).value != 0:

   Load = sh.cell(i,11).value
   D1 = sh.cell(i,13).value
   D2 = sh.cell(i,14).value
   D3 = sh.cell(i,15).value
   D4 = sh.cell(i,16).value
   D5 = sh.cell(i,17).value
   D6 = sh.cell(i,18).value
   D7 = sh.cell(i,19).value
   DB1 = str(Load) + "  " + str(D1) + "  " + str(D2) + "  " + str(D3)+ "  " + str(D4)+ "  " + str(D5)+ "  " + str(D6)+ "  " + str(D7)

   file = open("Output.txt", "w")
   file.write(DB1 + '\n')
   file.close
   i = i + 1

此代码的问题是写入文本文件的数据始终显示在第一行。因此,虽然我在Excel中有20行数据,但文本文件仅在文本文件的第一行显示Excel文件中的最后一个数据。我有'\n' in file.write但是,它似乎不起作用。


你应该open http://docs.python.org/2/library/functions.html#open the output.txt文件与append mode:

file = open("Output.txt", "a")

另外,您应该在进入循环之前执行此操作,并且应该在循环之后关闭它。


Update:

在这种情况下,您可以使用with而不是在最后关闭文件句柄。

还包括提出的好建议@Josh 在他自己的回答中 https://stackoverflow.com/a/17977823/677022,代码可能是这样的:

import xlrd
import os.path

wb = xlrd.open_workbook(os.path.join('D:\TRB 2014 Data','SPS1 demo data.xlsx'))
wb.sheet_names()
sh = wb.sheet_by_index(0)
i = 1
with open("Output.txt", "a") as my_file:
    while sh.cell(i,11).value != 0:
        Load = sh.cell(i,11).value
        all_d = sh.col_values(i, 13, 19)
        DB1 = Load + " " + (" ".join(all_d))
        my_file.write(DB1 + '\n')
        i += 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从Excel中读取数据并逐行写入文本文件? 的相关文章

随机推荐