Главная страница
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.47 MB
Время: 0.015 c
15-1207665448
Igorek
2008-04-08 18:37
2008.05.18
Проверка Tab Separated файла


3-1197029425
zorik
2007-12-07 15:10
2008.05.18
Запрос из 4-х таблиц


2-1208336709
4ort
2008-04-16 13:05
2008.05.18
Уничтожение массива компонентами ...


15-1206905643
Поп Гапон
2008-03-30 23:34
2008.05.18
Как вы думаете, IT-шникам сейчас как в материальном плане?


15-1206929508
slider007
2008-03-31 06:11
2008.05.18
С днем рождения ! 31 марта 2008 понедельник