Аватар для nnnikotinnn995
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583

Все форматы Excel и Word

22.11.2018, 10:16. Показов 783. Ответов 6

Студворк — интернет-сервис помощи студентам
Здравствуйте. Нужно открыть только Excel и Word файлы,на остальные показать сообщение типа "не поддерживаемый формат". Можно через исключение это делать как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for (int i = 0; i<FileOpen1->Dialog->Files->Count; i++) {
AnsiString Filenamen=FileOpen1->Dialog->Files->Strings[i];
if(FileExists(Filenamen)){
//пытаемся открыть word
try{
WordDocs = WonrdbeginN.OlePropertyGet("Documents").OleFunction("Open",
        WideString(Filenamen));
...
}catch(...){ 
WordDocs.OleFunction("Close");
             }
//пытаемся открыть excel
try{
BooksnN.OleFunction("Open",Filenamen.c_str());
...
}catch(...){ 
BooksnN.OleFunction("Close");
             }
}
}
Но как это сделать без исключений? Насколько мне известно, определить Excel этот файл или какой то другой невозможно. Но можно узнать расширение файла как то так
C++
1
UnicodeString expansion=AnsiLowerCase(ExtractFileExt(FileOpen1->Dialog->Files->Strings[i]));
Тогда нужно знать все форматы ексель и ворд, которые в будущем могут добавиться. Как вы думаете, что тут еще можно сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2018, 10:16
Ответы с готовыми решениями:

Все документы word и excel повреждены
Добрый день есть сервер на win 2008 у нем есть общая папка с доступом на чтение и запись всех юзеров конторы, вчера все документы word...

Word + Excel, Импорт данных из Excel в шаблон Word с условиями
Здравствуйте! Помогите, пожалуйста. Есть файл Word с расставленными закладками-метками и файл Excel с несколькими листами. С помощью...

Форматы данных в ячейках Excel
Здравствуйте! Подскажите пожалуйста, возможно ли сделать так, чтобы одновременно выполнялись 4 условия: 1) Формат текста в ячейках excel...

6
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
22.11.2018, 10:22
nnnikotinnn995, Скорее всего, только через исключения. Или предварительно считывать заголовок и определять сигнатуры, свойственные для данных файлов.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
22.11.2018, 10:37
Цитата Сообщение от nnnikotinnn995 Посмотреть сообщение
Но как это сделать без исключений?
А зачем?
0
 Аватар для nnnikotinnn995
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
22.11.2018, 11:09  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
А зачем?
Если определен тип документа, то можно не открывать другой тип
C++
1
2
UnicodeString expansion=AnsiLowerCase(ExtractFileExt(FileOpen1->Dialog->Files->Strings[i]));
if(expansion==".xls"||expansion==".xlsx"||...)ворд не открываем, производительность повышаем
Да и исключение - это все равно ошибка, на всех ли устройствах оно одинаково действует? Всегда ли при не удачной попытке открыть документ выскочит исключение?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
22.11.2018, 11:19
Цитата Сообщение от nnnikotinnn995 Посмотреть сообщение
Всегда ли при не удачной попытке открыть документ выскочит исключение?
Да, если бы этого не было - исключения никому на фиг не нужны были бы. На то оно и исключение, чтобы показать, что произошла исключительная ситуация. Отказ сервера открыть файл - это исключительная ситуация.

Цитата Сообщение от nnnikotinnn995 Посмотреть сообщение
ворд не открываем, производительность повышаем
Это ты на сравнениях строк собрался производительность повышать? Ну тогда я пас. Да, и кстати, замени это множественное сравнение строк на IndexText, оно гораздо лучше смотрится...
0
 Аватар для nnnikotinnn995
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
22.11.2018, 14:52  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Да, если бы этого не было - исключения никому на фиг не нужны были бы. На то оно и исключение, чтобы показать, что произошла исключительная ситуация. Отказ сервера открыть файл - это исключительная ситуация.
При попытке открыть CorelDRAW (.cdr) word вызывает исключение не при открытие, а после попытки подключится к таблице по item
C++
1
2
3
4
5
6
7
try{
 WonrdDocs = WonrdbeginN.OlePropertyGet("Documents").OleFunction("Open",
        WideString(Filenamen));wonrd_is_getn=true;
WonrdDoc = WonrdbeginN.OlePropertyGet("ActiveDocument");
 int numTbls = WonrdDoc.OlePropertyGet("Tables").OlePropertyGet("Count");
    WonrdTable = WonrdDoc.OlePropertyGet("Tables").OleFunction
        ("Item", numTbls);//доходит аш до сюда
А ексель вообще ни каких исключений не вызывает кроме окна "Не известный формат файлов" (снимок 1), и после нажатия на кнопку OK все зависает с сообщением "Произошли ошибки при выполнение многошаговой операции. Проверьте значение всех состояний".
А при попытке открыть .txt ексель вообще ни каких исключений не вызывает, упорно ищет ячейки (которых нет) и получает из них нулевое значение. Как в таких случаях исключение вызвать?
Миниатюры
Все форматы Excel и Word  
0
 Аватар для nnnikotinnn995
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
23.11.2018, 09:24  [ТС]
А почему попытка открыть .txt не вызывает исключений? Потому что майкрософт?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2018, 09:24
Помогаю со студенческими работами здесь

Вирус зашифровал все файлы word, excel. jpeg
здравствуйте коллеги вирус зашифровал важные файлы имя файла.doc.id-{TUVWXXYYZABBCCDDEFGGGHIIJKKKLMNNOPPP-29.08.2014...

Перенести все порции данных из Excel в Word-таблицу
Здравствуйте. Есть столбец A в Excel. В нём порции данных по 4 строки. Данные формируются макросом из выгрузки. Как перенести все...

Ввод даты вида хх.хх.хххх и её преобразоватие в другие форматы форматы. String
пользователь вводит дату рождения вида хх.хх.хххх, написать программу, которая выводит эту дату в форматах (напр. 21.10.2013): 1....

DVD плеер, поддерживающий все форматы
Интересно, а есть вообще такие двдишники, которые поддерживают форматы avi , mpg/mpeg 1-4, mp4, mp3, mkv и wmv. Да еще и чтоб был выход для...

Как сохранить и восстановить все форматы в буфере обмена
Этот код показывает какие форматы находятся в буфере обмена Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru