Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Программирование, связанное с MS Office > Синхронизация текстового файла и таблицы excel |
Автор: klassik 4.7.2008, 16:43 | ||
Есть текстовый файл. У него есть определённая структура. Состоит из строковых и числовых значений. Надо сделать так, чтобы EXCEL открыл этот файл, расставил все значения по определённым столбцам и строкам. После изменения этих значений в EXCELe я мог бы сохранить в этот же текстовый файл с той же структурой. Можно ли это сделать используя XML и XSD? Стркутура примерно такая:
Можно, наверное, сделать и с помощью VBA, но мне показалось при чтении про XML, что это проще, или может быть более гибко. Т.е. при изменении структуры исходного файл, мне достаточно будет изменить файл XML или XSD. И ещё может быть надо знать что-такое парсинг? |
Автор: Akina 4.7.2008, 21:28 |
Все это - только программно. |
Автор: klassik 4.7.2008, 23:27 | ||||||
И до и после. Мне просто неудобно редактировать и анализировать этот файл в текстовом редакторе. А в EXCELe я смог бы подбирать нужные характеристики прибора.
Не важно. Самое главное, чтобы на входе и навыходе был именно такой текстовый файл. Хотя в будущем, возможно текстовый файл будет дополняться.
Я владею больше С++. Правда только наподобие borland C++ 3.1. Но со временем я изучу С++ для Windows. Присоединил файл, но там не все возможные характеристики. Причём эти характеристики в новом варианте записываются немного в другой последовательности. |
Автор: LOPUH 7.7.2008, 05:10 | ||||||
Судя по
используется некая коллекция (стек ,очередь,дерево) объктов. Вышеописанные структуры так и напрашиваются на создание виртуального родительского объекта, который бы инкапсулировал все возможные поля и ,соответственно , методы их хранения. Потом при считывании текстового файла находим строчку
создаем объект-потомок, далее , пока не встретим
НО увы.. VBA лишен наследования у пользовательских объектов. Единственное более-менее приемлимое решение - использование XML. Для работы с ним в VBA предназначена библиотека MSXML ( Tools -> References ->Microsoft XML,v.5.0) Создаете объект DOMDocument. У объекта DOMDocument есть методы CreateNode и CreateElement, создающие узлы и элементы с соответствующими именами.Если захотите идти по предложенному(кстати,вами) пути использование XML, задавайте конкретные вопросы, постараюсь помочь.. |
Автор: Akina 7.7.2008, 08:11 | ||
Исходный (и конечный) форматы у него заданы. Жестко. И этот формат - не XML. Настроить входной поток так, чтобы на входе в DOM преобразовывать имеющийся текст в XML (а MSXML к проблемам с форматом очень чувствителен) не выйдет. В то же время обычный парсинг текстового файла никаких проблем не вызывает. Читай себе построчно, пихай куда надо. Список однонаправленный, невложенный, одного курсора достаточно... и не надо мудрить ни с XML, ни тем более с деревьями, которым тут вообще делать нечего. |
Автор: LOPUH 7.7.2008, 09:47 | ||||
Проблема здесь не в том, чтобы считать текстовый файл построчно.
Основная проблема придумать механизм храненения и редактирования данных. и последующего экспорта в текстовый файл. Так как мы имеем жестко структурированные данные, то придумать что то лучше XML сложно.
С XML я не работал как то не возникало нужды.. Но мне почему то кажется, что больших проблем возникать не должно. Чисто из спортивного интереса, когда появится свободное время, постараюсь написать макрос для экспорта.. Но насчет сроков пока ничего сказать не могу, ибо занят ![]() |
Автор: krb 7.7.2008, 23:59 |
У меня вопрос!!! Есть Excel таблица с данными(информация о клиенте, даты, суммы и пр.). Нужно вытащить эти данные и поместить их Word документы. Расположение этих данных в Worde различаются. Как это сделать??? |
Автор: Akina 8.7.2008, 08:01 |
Не лезть в чужую тему, да к тому же не по делу, а создать свою. Это для начала. |
Автор: klassik 9.7.2008, 12:02 | ||
Я нашёл: DOMDocument DOMDocument26 DOMDocument30 DOMDocument40 DOMDocument50 В чём различие? |
Автор: LOPUH 9.7.2008, 12:18 |
В версии.. лучше всего пользоваться 5.0 Да, кстати наверно можно обойтись без XML, я думаю Akina прав.. Завтра постараюсь скинуть примерчик, хотя не гарантирую, может опять работа навалиться.. ![]() |
Автор: klassik 9.7.2008, 12:31 |
Почему то справки нет по этому объекту. |
Автор: LOPUH 9.7.2008, 12:39 |
Ну это ActiveX компонент, ее и не должно быть.. Погуглите... |
Автор: klassik 9.7.2008, 13:32 | ||
Так может с XML в дальнейшем будет удобнее. Если у меня добавятся характеристики узла в текстовом файле. |
Автор: LOPUH 9.7.2008, 13:43 |
Ладно попорбуем с XML. Просто у меня появились определенные соображения как такие структуры можно хранить в VBA. И в этом свете добавка новой структуры вполне реализуема.. |
Автор: LOPUH 9.7.2008, 14:33 |
Такой вопрос : поля Emission, Resist, Absorbtion везде имеют разную длину.. Имеет ли значение формат их вывода, то есть сколько значений выводится в одну строчку? |
Автор: klassik 9.7.2008, 14:55 | ||
Не больше десяти. Узел сфера. 4х8 = 32 площадки. И у каждой свои характеристики. Радиус единица. Строка SPHERE OUTSIDE 4 8 1 -90 90 0 360 DEF/1 не важна. Потому-что геометрические характеристики меняются гораздо реже. Важны только характеристики узла. |
Автор: LOPUH 9.7.2008, 17:07 |
Oх, чем дальше в лес.. Но во втором вашем аттаче я не вижу строки Так бы можно было определять длину массива для хранения данных.. |
Автор: klassik 9.7.2008, 17:32 | ||||
Там много разный выриантов задания площадки. Тетраэдр, параллелепипед, конус, цилиндр. Но всё это не важно. Важны только характеристики узла.
EMISSION 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32 штуки |
Автор: LOPUH 14.7.2008, 10:09 |
Здравствуйте. Я снова тут.. Извините времени совершенно нет, поэтому решил пойти по пути наименьшего сопротвления. В аттаче файлик созданный путем импорта данных из текстого файла ( ваш файалик 1.mod)и последующей заменой всех точек на запятые. При этом сгенерирован макрос(Макрос 4). Вид , конечно сырой, ро в ваших силах написать макрос , копирующий данные на следующий лист и форматирующий их соответственно. Увы поэкспериментировать c XML не получилось, там нужно достаточно много кода и плотно разбираться, что позволить себе увы , пока не могу.. |
Автор: klassik 14.7.2008, 11:55 |
Спасибо. Буду разбираться самостоятельно. В случае чего, буду задавать вопросы. |