dz_victor
|
||||||||||||
1 | ||||||||||||
Передача данный из StringGrid в "открытый" Excel28.08.2010, 01:56. Показов 4314. Ответов 2
Метки нет (Все метки)
Здравствуйте, форумчане, пиши (на C++ Builder 6) функцию передачи данный из StringGrid в Excel, с OLE объектами до этого не работал, так что начал рыть в интернете, в результате гугления настрадал вот такую функцию:
SaveGridToXLS(Form1->StringGrid1,"c:\\1.xls"); - если имя файла указано, то вывожу StringGrid в Excel и отрубаюсь, если имя файла пустое ("") - вывожу данные и делаю Excel видимым. Код
ВОПРОСЫ: 1. ОСНОВНОЙ: Если я просто хочу вывести данные в Excel, то каждый раз создается новое окно, я так и не придумал как этого избежать.. т.е. - данные в StringGrid могую несколько раз изменяться и выводиться в Excel - но при повторном вызове функции создается новое окно, как сделать так, чтоб при повторном вызове изменения производились в том же окне (файле).... 2. при инициализации Ex=CreateOleObject("Excel.Application"); пробовал предворительно производить попытку подключения к уже существующему объекту Ex=GetActiveObject("Excel.Application"); - но в результате полезли ошибки, пришлось закоментировать этот кусок, не знаю, почему не работает? 3. сохранение в файл без визуализации работает нормально, единственная ошибка возникает, если файл для записи открыт, как избежать такой ошибки? 4. несколько раз встречал обращение к Excel через ExcelApplicatin1, в моем случае он вообще не используется, подходящего примера для ExcelApplicatin1 не нашел, так что сделал - так как смог - не лучше ли было использовать ExcelApplicatin1? 5. при передаче данных в Excel использовал простое копирование, в паре примеров находил копирование через буфер обмена или динамический массив Range, вроде как это лучше для быстродействия и концептуально правильнее, что посоветуете? Зарание спасибо, если кто что посоветует - буду признателен. Добавлено через 1 минуту
|
28.08.2010, 01:56 | |
Ответы с готовыми решениями:
2
Как заставить запускать текущий (открытый в данный момент) проект? Передача цвета строк и цвета текста из stringgrid в excel и обратно Передача данных в локальный HTML файл открытый в webbrouser Запись данных в открытый файл Excel Как прочитать открытый файл Excel? |
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
|
||||||
29.08.2010, 12:03 | 2 | |||||
0
|
dz_victor
|
|
29.08.2010, 21:07 | 3 |
Спасибо, iama, я натыкался на этот пример на:
C Builder Русское Сообщество Разработчиков Немного о работе с Microsoft Excel http://cppbuilder.ru/articles/0053.php Там брал функцию ExcelInit(void), еще там были функции для открытия шаблона OpenSablon и копирования формы шаблона в отчет CopyRepFromSablon, но я так понял, что для простого вывода StringGrid в Excel они мне не нужны...? Дело в том, что я пробовал вставлять эту функцию в свою прогу, но потом убрал, так как при запуске билдер ругался: Project Project1.exe raised exception class EOleSysError with message "Operation Unavailable". Process Stopped. Use Step or Run to continue. Сейчас пересмотрел внимательнее - в т.ч., попробовал запуск не из проекта, а из готового экзэшника - вроде все работает, т.е, как я понял - это была не ошибка, а здоровая реакция на "try", я прав? Так что замечание было сделано не зря, но есть еще такой вопрос - с открытием/подключением к сервису Excel понятно, но все - если оставить так, как сейчас - билдер каждый раз создает новую книгу и пишет туда, а хочется добиться эффекта - "в одно окно" при клике на кнопочку "Открыть таблицу в Excel", т.е. в продолжение темы - Как ПИСАТЬ В ОДНУ КНИГУ... Первое что приходит на ум - перезаписывать страницу в книге: получать активную книгу, получать страницу (активную/тупо первую) очищать ее и выводить по-новой, вроде, подобную функцию я в одном из примеров видел... но тогда вопрос - как узнать, что активна нужная страница?! как я понимаю при изложенном подходе будет либо создаваться новая кнгига, либо перезаписываться первая попавшаяся активная... Т.е., все, что приходит на ум - создавать/подключаться к Excel, сохранять в какой-нить "служебный файл" (вроде \\Temp.xls), который никто не будет открывать вручную, писать туда инфу, а потом загружать его в Excel и отображать.... так что ли... чего-то я тупить начинаю.. Поделитесть свежими мыслями по этой проблеме? |
29.08.2010, 21:07 | |
29.08.2010, 21:07 | |
Помогаю со студенческими работами здесь
3
Как получить открытый доступ к Excel файлу Как дозаписывать данные в открытый документ Excel Ошибка при добавлениии шаблона в открытый файл Excel Требуется из кода Vb вставить в открытый Excel-файл картинку Не отображается на экране файл Excel, открытый макросом из PowerPoint Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |