Нужно сделать несколько файлов из одного файла Excel - PullRequest
0 голосов
/ 04 августа 2009

У меня есть файл Excel. Со многими столбцами. Мне нужно сделать несколько файлов, используя этот

Например: 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2. Таким образом, это столбцы Excel, каждый из которых имеет много строк. Мне нужен один файл, который будет содержать 0 0 0 0 0 1 1 1 1 1 2, тогда второй будет содержать только второй нет 0 0 0 0 0 1 1 1 1 1 2 .... аналогично другим.

Спасибо всем за ваш ответ. Чтобы упростить вопрос:

  1. У меня есть файл Excel, как я уже упоминал, с количеством столбцов и строк. Столбцы названы

альтернативный текст http://img44.imageshack.us/img44/3397/84200961244pm.png

Теперь мне нужно разбить этот файл на множество файлов Excel, первый из которых будет иметь

столбцы от A до O со всеми строками. Второй будет иметь от A до N + P (это не будет иметь столбцы O) и аналогично другим 2. Там будет как много столбцов с 2, и мне нужно будет создать файл, содержащий все столбцы, содержащие O и 1 и каждый 2 вовремя. то есть 1-е 2, затем 2-е и т. д.

Ответы [ 7 ]

6 голосов
/ 04 августа 2009

Вы можете использовать Spreadsheet::ParseExcel, чтобы прочитать электронную таблицу. К сожалению, это все, чем я могу вам помочь, потому что, честно говоря, описание вашей проблемы не имеет смысла.

2 голосов
/ 05 августа 2009

Используйте Python и xlrd & xlwt. См. http://www.python -excel.org

Следующий скрипт должен делать то, что вы хотите:

import xlrd, xlwt, sys

def raj_split(in_path, out_stem):
    in_book = xlrd.open_workbook(in_path)
    in_sheet = in_book.sheet_by_index(0)
    first_row = in_sheet.row_values(0)
    # find the rightmost 1 value in the first row
    split_pos = max(
        colx for colx, value in enumerate(first_row) if value == 1.0
        ) + 1
    out_book = xlwt.Workbook()
    out_sheet = out_book.add_sheet("Sheet1", cell_overwrite_ok=True)
    # copy the common cells
    for rowx in xrange(in_sheet.nrows):
        row_vals = in_sheet.row_values(rowx, end_colx=split_pos)
        for colx in xrange(split_pos):
            out_sheet.write(rowx, colx, row_vals[colx])
    out_num = 0
    # for each output file ...
    for out_col in range(split_pos, in_sheet.ncols):
        out_num += 1
        # ... overwrite the `split_pos` column
        for rowx, value in enumerate(in_sheet.col_values(colx=out_col)):
            out_sheet.write(rowx, split_pos, value)
        # ... and save the file.
        out_book.save("%s_%03d.xls" % (out_stem, out_num))

raj_split(*sys.argv[1:3])
1 голос
/ 04 августа 2009

Как прокомментировали другие, ваш вопрос почти совершенно непонятен. Исходя из сложности описания проблемы, вы, возможно, захотите взглянуть на этот пост .

Некоторые из них предложили сохранить ваш файл в формате CSV. Сохранение вашего файла в виде файла CSV значительно упростит его синтаксический анализ, но при этом преобразование в формат Excel и обратно будет выполнять вручную. Это может быть приемлемо, если у вас есть небольшое количество файлов для обработки. Если у вас есть сотни, это не будет работать так хорошо.

Модули Spreadsheet :: ParseExcel и Spreadsheet :: WriteExcel помогут вам читать и записывать файл электронной таблицы в собственном формате.

Модуль Text :: CSV_XS предоставляет мощный и быстрый анализатор CSV для perl.

1 голос
/ 04 августа 2009

в Excel, сохраните файл в формате CSV.

в Python, используйте модуль чтения CSV, чтобы прочитать его (читайте документы по Python, ищите CSV)

теперь вы говорите, что у вас есть строки из 20 столбцов, и вы хотите поместить столбцы 1..10 в файл A и столбцы 11..20 в файл B, да?

открыть 2 писателя CSV (назовем их A и B)

вы будете читать строки:

для строки в csvreader: A.writerow (строка [: 10]) B.writerow (строка [11:])

вот и все.

иди сюда: Как объединить поля в CSV-строке с помощью Python?

1 голос
/ 04 августа 2009

В python вы можете использовать xlrd , чтобы прочитать электронную таблицу Excel в данные, с которыми вы можете работать. См. README для примера использования. Затем вы можете использовать xlwt для создания новых электронных таблиц.

0 голосов
/ 04 августа 2009

Я думаю, что модули xlrd и xlwt - путь в Python.

# Read the first 5 rows and columns of an excel file
import xlrd # Import the package
book = xlrd.open_workbook("sample.xls") # Open an .xls file
sheet = book.sheet_by_index(0) # Get the first sheet
for row in range(5): # Loop for five times (five rows)
    # grab the current row
    rowValues = sheet.row_values(row, start_col=0, end_colx=4)
    # Do magic here, like printing
    import xlrd # Import the package
    print "%-10s | %-10s | %-10s | %-10s | %-10s" % tuple(rowValues)

Теперь, если вам хочется записать файлы Excel ...

import xlwt # Import the package
wbook = xlwt.Workbook() # Create a new workbook
sheet = wbook.add_sheet("Sample Sheet") # Create a sheet
data = "Sample data" # Something to write into the sheet
for rowx in range(5):
    # Loop through the first five rows
    for colx in range(5):
        # Loop through the first five columns
        # Write the data to rox, column
        sheet.write(rowx, colx, data)
# Save our workbook on the harddrive
wbook.save("myFile.xls")

Я широко использовал этот метод в части для чтения / записи данных из файлов Excel для моделей ввода / вывода для использования в NetworkX. Приведенные выше примеры взяты из записей моего блога, рассказывающих об этом приключении.

Поскольку я новый пользователь, я могу опубликовать только одну ссылку. Может быть, вы можете Google XLWT? :)

0 голосов
/ 04 августа 2009

Вы можете использовать Visual Basic для приложений, чтобы зациклить ячейки , а затем сохранить в текстовый файл .

OR

Сохраните файл как файл значений, разделенных запятыми, и используйте perl или python для простого анализа строк. (разделение на запятую для столбцов, символ конца строки для строк)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...