Лист Excel с записью всех данных в один столбец
У меня проблема с записью текста на лист Excel:
Вот мой код:
import xlwt
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('python')
row = 0 # row counter
col = 0
f = open('newfile.txt')
for line in f:
L = line.split('\t')
for c in L:
sheet.write(row,col,c)
row += 1
wbk.save('example12.xls')
И вот input.txt
:
Ename DCname Competency Effort
Eng01 DC1 SW 30
Eng02 DC2 HW 30
Eng03 DC3 ME 40
Eng04 DC2 SW 20
Eng05 DC3 FW 40
Eng06 DC3 SW 35
Eng07 DC1 HW 25
Eng08 DC3 SW 30
Eng09 DC1 HW 35
Eng10 DC3 SW 20
Eng11 DC1 HW 40
Eng12 DC3 SW 40
Eng13 DC1 HW 30
Eng14 DC1 HW 30
Eng15 DC3 FW 40
Но input.txt записывает только в один столбец, как я могу получить его для записи в разные столбцы?
2 ответа
Ваша проблема здесь:
for line in f:
L = line.split('\t')
for c in L:
sheet.write(row,col,c)
row += 1
col
никогда не меняется с 0
поэтому он всегда пишет в один и тот же столбец. Вы можете увеличивать его во время этого цикла, но лучше использовать enumerate
, enumerate
возвращает индекс каждой итерации цикла, чтобы вы могли посчитать, в каком столбце чисел вы его используете. Как это:
for line in f:
L = line.split('\t')
for i,c in enumerate(L):
sheet.write(row,i,c)
row += 1
i
это номер столбца, найденного в строке, поэтому он записывает каждый фрагмент данных в следующий столбец.
Если ваш входной текстовый файл разделен вкладками, должно работать следующее:
import csv
with open("input.txt", "r") as f_input, open("output.csv", "wb") as f_output:
csv_input = csv.reader(f_input, delimiter="\t")
csv_output = csv.writer(f_output)
text = list(csv_input)
csv_output.writerows(text)
Это даст вам файл, который можно открыть в Excel следующим образом:
Ename,DCname,Competency,Effort
Eng01,DC1,SW,30
Eng02,DC2,HW,30
Eng03,DC3,ME,40
Eng04,DC2,SW,20
Eng05,DC3,FW,40
Eng06,DC3,SW,35
Eng07,DC1,HW,25
Eng08,DC3,SW,30
Eng09,DC1,HW,35
Eng10,DC3,SW,20
Eng11,DC1,HW,40
Eng12,DC3,SW,40
Eng13,DC1,HW,30
Eng14,DC1,HW,30
Eng15,DC3,FW,40
Если вы хотите создать файл XLSX напрямую, используя openpyxl, можно использовать следующее:
import csv
from openpyxl.workbook import Workbook
with open("input.txt", "r") as f_input:
csv_input = csv.reader(f_input, delimiter="\t")
wb = Workbook()
ws1 = wb.active
ws1.title = "Locations"
for row in csv_input:
ws1.append(row)
wb.save(filename="output.xlsx")