Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.18;
Скачать: CL | DM;

Вниз

Быстрое определение валидности Excel евского файла   Найти похожие ветки 

 
Andy BitOff (PPC)   (2008-04-16 12:36) [0]

Сейчас надо написать приблуду обработи Excel"евского файла. Думаю будет функцианал работы из командной строки. Так вот, отсюда вопрос, как быстро проверить, что файл действительно Excel"евский? А не, например, bmp с расширением .xls


 
Palladin ©   (2008-04-16 12:42) [1]

1 попробовать открыть IStorage
2 прочитать какие нибудь весомые признаки, что IStorage создавался Excel"ем


 
Ega23 ©   (2008-04-16 12:54) [2]

1. Прочитать первые 8 байт файла.

function TDocLoader.CheckOnBIFF8(Item: TDocLoaderItem;
 Stream: TFileStream): Boolean;
var
 Buff : array[0..1] of Cardinal;
begin
 try
   Stream.Position := 0;
   Stream.ReadBuffer(Buff, 8);
   Result := (Buff[0] = $E011CFD0) and (Buff[1] = $E11AB1A1);
   if Result - значит BIFF8-файл
     


2. Проверить, что это Excel. Сместиться на первый BOF, прочитать 2 байта.

function TDocLoader.CheckOnExcel(Item: TDocLoaderItem;
 Stream: TFileStream): Boolean;
var
 Buff1 : array[0..2] of Word;
 Buff2 : Word;
const
 ExcelMagic = $0809;
 ReadFL = $002F;
 WriteFL = $0086;
begin

 try
   Stream.Position := 512;  // Ñìåùåíèå íà ïåðâûé BOF
   Stream.ReadBuffer(Buff2, 2);
   Result := Buff2=ExcelMagic;
   if Result - Значит Excel


Способ работает на Excel97 - Excel2003 (включительно).
Проверки на повреждения не делал, задачи не стояло.


 
Andy BitOff (PPC)   (2008-04-16 13:31) [3]

Спасибо. Использую ;)



Страницы: 1 вся ветка

Текущий архив: 2008.05.18;
Скачать: CL | DM;

Наверх




Память: 0.44 MB
Время: 0.044 c
3-1197374036
em240
2007-12-11 14:53
2008.05.18
Оповещение+mssql2000


9-1170231355
akaValerius
2007-01-31 11:15
2008.05.18
Указатель на часть массива


2-1208361521
Igor
2008-04-16 19:58
2008.05.18
Упорядочить фаил..


15-1207033376
Тыгыдымский конь
2008-04-01 11:02
2008.05.18
В какой Windows появился шрифт Tahoma


2-1208585538
Мастак
2008-04-19 10:12
2008.05.18
Процесс не может получить доступ к файлу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский