如何从Excel中读取数据并将其逐行写入文本文件? [英] How to read data from Excel and write it to text file line by line?

查看:47
本文介绍了如何从Excel中读取数据并将其逐行写入文本文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to write code to get data from Excel and write it to a text file. Here is the code I have:

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文件中的最后一个数据.我在 file.write 中有 '\n' 但是,它似乎不起作用.

The problem with this code is the data written to the text file is always displayed at the first row. Therefore, although I have 20 rows of data in excel, the text file only shows the last data in the excel file at the very first row in the text file. I have '\n' in file.write but, it doesn't seem to work.

推荐答案

你应该 打开 output.txt 文件,追加模式:

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

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

Also, you should do this before entering the loop, and it should be closed after that loop.

更新:

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

In cases like this one, you could use with instead of closing the file handle at the end.

还包括 @Josh 在他自己的回答中提出的好建议,代码可能是这样的:

Also including the good suggestion made by @Josh in his own answer, the code could be this:

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

这篇关于如何从Excel中读取数据并将其逐行写入文本文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆