Форум: "Начинающим";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];
ВнизБыстрое определение валидности 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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.037 c