Как преобразовать файл Excel в CSV при сохранении информации о ячейке? - PullRequest
0 голосов
/ 04 февраля 2020

Есть ли способ преобразовать электронную таблицу Excel, содержащую несколько вкладок, в файлы CSV (по одной на вкладку) и пометить данные в CSV информацией о ячейке?

Например, строка ниже в Excel:

Data in Excel

должно выглядеть так в выходном CSV-файле:

[A1]Id,[B1]Author Name

[A2]1,[B2]Agatha Christie

[A3]2,[B3]Ayn Rand

[A4]3,[B4]Arthur Conan Doyle

Я пытаюсь использовать Python для этого, что я довольно новичок. Здесь я наткнулся на множество постов, в которых говорится о преобразовании Excel в CSV с использованием таких пакетов, как xlrd, pandas et c. Но я также хотел бы знать, можно ли каким-либо образом собирать информацию о ячейке.

Кроме того, если есть другие способы выполнения этого требования, пожалуйста, сообщите.

Ответы [ 2 ]

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

Может быть, как-то так ....

from xlrd import open_workbook
from xlwt import Workbook
import os

for file in os.listdir('C:\\your_path_here\\'):
    if file.endswith('.xlsx'):
        rb = open_workbook('C:\\your_path_here\\' + str(file),formatting_info=False)
        num = rb.nsheets

for a in range(num): 

   rs = rb.sheet_by_index(a)
   sheet = (rs.name)

   new_book = Workbook()
   new_sheet = new_book.add_sheet(sheet)

   for row in range(rs.nrows):
       for col in range(rs.ncols):
           new_sheet.write(row, col, rs.cell(row, col).value)

   new_book.save('C:\\your_path_here\\' + str(sheet) + '.csv')
0 голосов
/ 04 февраля 2020

Если ваш фрейм данных выглядит следующим образом:

df
#>   Id        Author.Name
#> 1  1    Agatha Christie
#> 2  2           Ayn Rand
#> 3  3 Arthur Conan Doyle

Тогда вы можете сделать это:

df <- as.data.frame(mapply(function(x, y) paste0("[", y, 1:length(x), "] ", as.character(x)),
             df, LETTERS[seq_along(df)]))

Чтобы добавить соответствующие ячейки Excel в нужном формате.

Вывод:

df
#>       Id             Author.Name
#> 1 [A1] 1    [B1] Agatha Christie
#> 2 [A2] 2           [B2] Ayn Rand
#> 3 [A3] 3 [B3] Arthur Conan Doyle

И если вы напишите csv с

write.csv(df, "df.csv")

, тогда содержимое df.csv будет выглядеть так:

"","Id","Author.Name"
"1","[A1] 1","[B1] Agatha Christie"
"2","[A2] 2","[B2] Ayn Rand"
"3","[A3] 3","[B3] Arthur Conan Doyle"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...