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

Форум пользователей пакета Maple

Модератор: Admin

martingal
Сообщения: 32
Зарегистрирован: Чт ноя 24, 2005 10:55 am

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

Сообщение martingal » Чт апр 06, 2006 5:58 pm

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

Андрей М.
Сообщения: 239
Зарегистрирован: Чт апр 21, 2005 3:15 pm

Сообщение Андрей М. » Чт апр 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.

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

martingal
Сообщения: 32
Зарегистрирован: Чт ноя 24, 2005 10:55 am

Сообщение martingal » Пт апр 07, 2006 9:17 am

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

Irmantas
Сообщения: 589
Зарегистрирован: Ср апр 27, 2005 8:49 pm
Откуда: Литва, Каунас

Сообщение Irmantas » Пт апр 07, 2006 11:22 am

Андрей М. писал(а):Да, можно и достаточно несложно. Между тем могу предложить использовать достаточно простую процедуру 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 процедур.

martingal
Сообщения: 32
Зарегистрирован: Чт ноя 24, 2005 10:55 am

Сообщение martingal » Пн апр 10, 2006 5:59 pm

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

Irmantas
Сообщения: 589
Зарегистрирован: Ср апр 27, 2005 8:49 pm
Откуда: Литва, Каунас

Сообщение Irmantas » Пн апр 10, 2006 9:58 pm

Папрбуете такую процедуру
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"]]);

martingal
Сообщения: 32
Зарегистрирован: Чт ноя 24, 2005 10:55 am

Сообщение martingal » Вт апр 11, 2006 9:52 am

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 ).

Irmantas
Сообщения: 589
Зарегистрирован: Ср апр 27, 2005 8:49 pm
Откуда: Литва, Каунас

Сообщение Irmantas » Вт апр 11, 2006 3:05 pm

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 тоже работает.

martingal
Сообщения: 32
Зарегистрирован: Чт ноя 24, 2005 10:55 am

Сообщение martingal » Ср апр 12, 2006 6:24 pm

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

Irmantas
Сообщения: 589
Зарегистрирован: Ср апр 27, 2005 8:49 pm
Откуда: Литва, Каунас

Сообщение Irmantas » Ср апр 12, 2006 10:47 pm

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), ...

martingal
Сообщения: 32
Зарегистрирован: Чт ноя 24, 2005 10:55 am

Сообщение martingal » Чт апр 13, 2006 11:14 am

А где можно найти дополнение из Aladjevа?

Irmantas
Сообщения: 589
Зарегистрирован: Ср апр 27, 2005 8:49 pm
Откуда: Литва, Каунас

Сообщение Irmantas » Чт апр 13, 2006 2:45 pm

martingal писал(а):А где можно найти дополнение из Aladjevа?

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

Андрей М.
Сообщения: 239
Зарегистрирован: Чт апр 21, 2005 3:15 pm

Сообщение Андрей М. » Чт апр 13, 2006 11:03 pm

С книгой проф. В. Аладьева можно еще ознакомиться в новинках здесь http://www.exponenta.ru/educat/links/b_mpl.asp

wer77
Сообщения: 3
Зарегистрирован: Чт окт 18, 2018 3:19 pm

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

Сообщение wer77 » Чт окт 18, 2018 3:29 pm

Здравствуйте, уважаемые метаматематики!

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

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

Спасибо