Страница 1 из 1

Можно ли импортировать таблицу из exel или word?

Добавлено: Чт апр 06, 2006 5:58 pm
martingal
Уважаемые форумчане! Подскажите, пожалуйста, можно ли импортировать таблицу из exel или word в файл maple, сохранив данные в виде прямоугольной матрицы? Таблица состоит из чисел и содержит пропущенные значения.

Добавлено: Чт апр 06, 2006 10:00 pm
Андрей М.
Да, можно и достаточно несложно. Между тем могу предложить использовать достаточно простую процедуру Readarray. См. ее исходник и описание:

Readarray := proc (F::rlb) local a, b, c; assign(a = fopen(F, 'READ', 'TEXT'), b = [], c = interface(warnlevel)), interface(warnlevel = 0); while `not`(Fend(F)) do b := [op(b), map(parse, SLS(Red_n(readline(F), ["\t", " "], 2), {"\t", " "}), 'statement')] end do; close(F), array(b), null(interface(warnlevel = 0)) end proc

Readarray - reading of data from rlb-datafiles into the current Maple-session

Calling Sequence:
Readarray(F::rlb)

Rarameters:
F - symbol or string defining name or full path to a rlb-datafile

Description:
The procedure call Readarray(F) returns the array whose elements are located in a rlb-datafile defined by the file qualifier F. The rlb-datafile F consists of logical records (values of string-type) that are parted by symbols of line feed and carriage return {hex(0D0A)}; data in logical records are parted by blanks and/or symbols "\t" (tabs). It is supposed, that each logic record contains the same quantity of data; otherwise, at the call Readarray(F) an erroneous situation arises. Procedure appears enough useful in the tasks that work with data prepared in the environment of other software.

Процедура считывает из файла в текущий документ данные из файла в виде массива. Тип данных может быть достаточно произвольным. См. пример ниже.
Изображение

Добавлено: Пт апр 07, 2006 9:17 am
martingal
Андрей М., спасибо за помощь. К сожалению, при попытке воспользоваться процедурой, получил ответ: Error, type `rlb` does not exist.
Что означает rlb-datafiles? Есть ли такая конструкция в Maple-8? Являются ли файлы формата exel или word файлами типа rlb-datafiles? И еще один вопрос: как вставлять рисунки с примерами в сообщение?

Добавлено: Пт апр 07, 2006 11:22 am
Irmantas
Андрей М. писал(а):Да, можно и достаточно несложно. Между тем могу предложить использовать достаточно простую процедуру Readarray. См. ее исходник и описание:

Readarray := proc (F::rlb) local a, b, c; assign(a = fopen(F, 'READ', 'TEXT'), b = [], c = interface(warnlevel)), interface(warnlevel = 0); while `not`(Fend(F)) do b := [op(b), map(parse, SLS(Red_n(readline(F), ["\t", " "], 2), {"\t", " "}), 'statement')] end do; close(F), array(b), null(interface(warnlevel = 0)) end proc



Не у всех есть процедуры Aladjevа (их можна наити http://www.aladjev.narod.ru/).
Можно делать так: сохронить exel или word документ в ТХТ и импортировать с помощи readbytes, readline или readdata процедур.

Добавлено: Пн апр 10, 2006 5:59 pm
martingal
Irmantas писал(а):Можно делать так: сохронить exel или word документ в ТХТ и импортировать с помощи readbytes, readline или readdata процедур.


У меня в таблице в exel или word много пустых ячеек, в ячейках символьная информация, и при сохранении документа в TXT столбцы таблицы наезжают друг на друга:

в exel было так:
aa bbbbbb cc dd
ee пробел gg hh
в TXT стало так:
aa bbbbbb cc dd
ee gg hh

Не подскажите ли, как сделать, чтобы в maple появилась такая матрица:
aa bbbbbb cc dd
ee пробел gg hh

Добавлено: Пн апр 10, 2006 9:58 pm
Irmantas
Папрбуете такую процедуру
data:= proc(FF::file)
local D,S,L,h,F; D:=[]:
F:=fopen(FF,READ,TEXT);
do S:= readline(F);
if S=0 then break
else L:=[]:
do h:=searchtext("\t",S);
if h=0 then L:=[op(L),S]; break; end if;
L:=[op(L),S[1..h-1]]; S:=S[h+1..-1];
end do; D:=[op(D),L];
end if end do:
close(F); matrix(D); end proc:


При сохранении exel документа в TXT палучил
aa bbbbbb cc dd kkk
ee пробел gg hh пробел
tttt ww пробел пробел qqq

data(`C:/q1.txt`);

результат

matrix([["aa", "bbbbbb", "cc", "dd", "kkk"], ["ee", "", "gg", "hh", ""], ["tttt", "ww", "", "", "qqq"]]);

Добавлено: Вт апр 11, 2006 9:52 am
martingal
Irmantas, спасибо. Правда у меня на выходе получается
matrix([["aa bbbbbb cc dd kkk"], ["ee gg hh"], ["tttt ww qqq"]]) - мало кавычек.
Наверно это происходит из-за того, что у меня результат работы команды S:= readline(F) есть S := "aa bbbbbb cc dd kkk". У Вас же результат работы команды S:= readline(F) наверно S := "aa" "bbbbbb" "cc" "dd" "kkk". Интересно, почему команда S:= readline(F); у нас работает по разному. Может быть у нас разные версии maple (у меня maple 8 ).

Добавлено: Вт апр 11, 2006 3:05 pm
Irmantas
martingal писал(а):Наверно это происходит из-за того, что у меня результат работы команды S:= readline(F) есть S := "aa bbbbbb cc dd kkk". У Вас же результат работы команды S:= readline(F) наверно S := "aa" "bbbbbb" "cc" "dd" "kkk".

readline() выводит такой результат "aa\tbbbbbb\tcc\tdd\tkkk". Результат процедуры зависит как данные в Еxсel файле сохронены и каким образом конвертированы в ТХТ. B zip (приложеоженным файле) есть XLS, TXT (палучен из XLS) и MWS.

martingal писал(а):Интересно, почему команда S:= readline(F); у нас работает по разному. Может быть у нас разные версии maple (у меня maple 8 ).

От maple версии readline() независт. У меня maple 9, на 8 тоже работает.

Добавлено: Ср апр 12, 2006 6:24 pm
martingal
Irmantas, спасибо. Я научился сохранять текстовый файл так, чтобы он правильно обрабатывался Вашей программой. При этом мне пришлось заменить команду data:= proc(FF::file) на команду data:= proc(FF::evaln), потому что maple выдавал сообщение Error, type `file` does not exist (так ругается мой maple 8 - нигде в его HELPе я не нашел тип file). К сожалению, содержимое файла Book1.xls при этом превращается вот в какую абракадабру ["ÐÏࡱ"]. Еще раз спасибо, прошу прощения за отнятое у Вас время.

Добавлено: Ср апр 12, 2006 10:47 pm
Irmantas
martingal писал(а): При этом мне пришлось заменить команду data:= proc(FF::file) на команду data:= proc(FF::evaln), потому что maple выдавал сообщение Error, type `file` does not exist (так ругается мой maple 8 - нигде в его HELPе я не нашел тип file).

Забыл что нету file типа. Он есть если имеют дополнение из Aladjevа.

martingal писал(а): К сожалению, содержимое файла Book1.xls при этом превращается вот в какую абракадабру ["ÐÏࡱ"].

В Еxсel можна сохранить разнообразным способам: Text(Tab delimited), Unicode text (с етими и неработает процедура), Text(MX-DOS), ...

Добавлено: Чт апр 13, 2006 11:14 am
martingal
А где можно найти дополнение из Aladjevа?

Добавлено: Чт апр 13, 2006 2:45 pm
Irmantas
martingal писал(а):А где можно найти дополнение из Aladjevа?

http://www.aladjev.narod.ru/

Добавлено: Чт апр 13, 2006 11:03 pm
Андрей М.
С книгой проф. В. Аладьева можно еще ознакомиться в новинках здесь http://www.exponenta.ru/educat/links/b_mpl.asp

Re: Можно ли импортировать таблицу из exel или word?

Добавлено: Чт окт 18, 2018 3:29 pm
wer77
Здравствуйте, уважаемые метаматематики!

Есть ли способ вставить в уже созданную таблицу Maple
столбец цифр из MSWord, Excel или блокнота?
А если еще и скопировать в столбец в обратном порядке можно, то тогда есть на этой планете счастье.

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

Спасибо