Как добавить данные во многие ячейки Excel - PullRequest
0 голосов
/ 22 февраля 2020

Я собираюсь получить информацию из базы данных и поместить в таблицу мою таблицу следующим образом:

enter image description here

здесь я объединяю ячейки, но не могу добавить данные потому что это дает мне ошибку

Traceback (most recent call last):
  File "main.py", line 37, in <module>
    for name, score in (scores):
ValueError: too many values to unpack (expected 2)

scores = (
    ['ankit', 1000, 1264, 4125],
    ['rahul',   100, 1452, 4578],
    ['priya',  300, 123, 1452],
    ['harshita',    50, 412,458],
)

row = 12
col = 0

# Iterate over the data and write it out row by row.
for name, score in (scores):
    worksheet.write(row, col, name)
    worksheet.write(row, col + 1, score)
    row += 1

Я собираюсь добавить, как показано выше с кодом, но я не могу, здесь ID ячейки должны заполняться порядком чисел автоматически в соответствии с длиной данных. пожалуйста, кто-нибудь может мне помочь с этими вопросами? это заняло много времени. Пожалуйста. Заранее спасибо!

1 Ответ

0 голосов
/ 22 февраля 2020

Не уверен, почему вы должны составлять списки для записей записей, то, как вы читаете записи из него, неверно.

например:

scores = (
    ['ankit', 1000, 1264, 4125],
    ['rahul',   100, 1452, 4578],
    ['priya',  300, 123, 1452],
    ['harshita',    50, 412,458],
)

Следующее выдает ошибку:

for name, score in scores:
    print(name, score)

ValueError                                Traceback (most recent call last)
<ipython-input-4-53788305b060> in <module>
----> 1 for name, score in scores:
      2     print(name, score)

ValueError: too many values to unpack (expected 2)

Вместо этого вы можете сделать это следующим образом:

row = 12
col = 0
for entry in scores:
    name = entry[0]
    score = sum(entry[1:])
    worksheet.write(row, col, name)
    worksheet.write(row, col + 1, score)
    row += 1

Я написал вышеприведенный код для хранения суммы баллов в одном столбце, если вы хотите индивидуальные баллы быть разделенным и сохраненным в одной строке, тогда этого будет недостаточно. Дайте мне знать библиотеку, которую вы используете для этого, так что я могу попытаться помочь вам в этом.

Вот код помощник! Надеюсь, это поможет!

import xlsxwriter as xls

scores = (
    ['ankit', 1000, 1264, 4125],
    ['rahul', 100, 1452, 4578],
    ['priya', 300, 123, 1452],
    ['harshita', 50, 412, 458],
)
# Create an new Excel file and add a worksheet.
workbook = xls.Workbook('merge_scores.xlsx')
worksheet = workbook.add_worksheet()
center = workbook.add_format({'align': 'center'})

#First write the headers separately merging the cell ranges required for the scores
worksheet.write(0, 0, "Name")
worksheet.merge_range(0, 1, 0, 3, "Scores", cell_format=center)

#Starting at 2nd row whose index will be one to put the actual data in
row = 1
col = 0
for entry in scores:
    worksheet.write_row(row, col, entry)
    row += 1
workbook.close()

merge_scores.xlsx workbook view

Для дополнительного форматирования ячеек вы можете взглянуть на следующие ссылки: https://xlsxwriter.readthedocs.io/example_rich_strings.html

https://xlsxwriter.readthedocs.io/format.html

...