fpspreadsheet

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

Модератор: Модераторы

fpspreadsheet

Сообщение sign » 02.09.2011 06:55:26

Кто-нибудь подключал fpspreadsheet?
WIN XP.
Все попытки что-то сделать упираются в то, что я не могу ни открыть файл (любого типа), ни записать созданный (из примера на - http://wiki.freepascal.org/FPSpreadsheet/ru)

Примером может кто-нибудь порадовать?
Последний раз редактировалось sign 06.09.2011 18:48:27, всего редактировалось 2 раз(а).
sign
энтузиаст
 
Сообщения: 961
Зарегистрирован: 30.08.2009 09:20:53

Re: fpspreadsheet

Сообщение Vadim » 02.09.2011 11:15:33

sign писал(а):ни открыть файл (любого типа), ни записать созданный

А какие, при этом, ошибки выдаются?
Vadim
долгожитель
 
Сообщения: 2816
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: fpspreadsheet

Сообщение sign » 02.09.2011 14:46:50

Код: Выделить всё
procedure TDM.LoadOrder(const aFileName: String);
var WB: TsWorkbook;
    WH: TsWorksheet;
begin
  WB := TsWorkbook.Create;
  try
    SetLength(GsSpreadFormats, 1);
    GsSpreadFormats[0].Format := sfOpenDocument;
    WB.ReadFromFile(aFileName, sfOpenDocument);
  finally
    WB.Free;
  end;
end;


В процедуре WB.ReadFromFile(aFileName, sfOpenDocument);

Код: Выделить всё
procedure TsWorkbook.ReadFromFile(AFileName: string;
  AFormat: TsSpreadsheetFormat);
var
  AReader: TsCustomSpreadReader;
begin
  AReader := CreateSpreadReader(AFormat);
  try
    AReader.ReadFromFile(AFileName, Self);
  finally
    AReader.Free;
  end;
end;


На создании AReader := CreateSpreadReader(AFormat);

Код: Выделить всё
function TsWorkbook.CreateSpreadReader(AFormat: TsSpreadsheetFormat): TsCustomSpreadReader;
var
  i: Integer;
begin
  Result := nil;
  for i := 0 to Length(GsSpreadFormats) - 1 do
    if GsSpreadFormats[i].Format = AFormat then
    begin
      Result := GsSpreadFormats[i].ReaderClass.Create;
      Break;
    end;
  if Result = nil then raise Exception.Create(lpUnsupportedReadFormat);
end;


Строка Result := GsSpreadFormats[i].ReaderClass.Create;
Возвращает nil.

Соответственно срабатывае Exception.
sign
энтузиаст
 
Сообщения: 961
Зарегистрирован: 30.08.2009 09:20:53

Re: fpspreadsheet

Сообщение alexs » 02.09.2011 22:36:04

Модуль fpsallformats.pas или один из (в зависимости от типа файла) xlsbiff2, xlsbiff5, xlsbiff8, fpsopendocument, xlsxooxml не забыл подключить?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3693
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: fpspreadsheet

Сообщение sign » 03.09.2011 06:29:11

alexs писал(а):Модуль fpsallformats.pas или один из (в зависимости от типа файла) xlsbiff2, xlsbiff5, xlsbiff8, fpsopendocument, xlsxooxml не забыл подключить?

О, блин!
Я это упустил, а в примере же все модули указаны!

Большое, большое спасибо!
sign
энтузиаст
 
Сообщения: 961
Зарегистрирован: 30.08.2009 09:20:53

Re: fpspreadsheet

Сообщение sign » 06.09.2011 19:00:21

Обнаружил проблему.
Если текст окрашен, то он не читается.
В прилагаемом документе нужно считывать только те строки, где указано кол-во заказанного.

Последняя нормально читаемая строка - 184.
Следующая с указанным кол-вом (колонка H) - 264.
Текстовая ячейка B264, окрашена и при её чтении посредством WH.GetCell(P.Row, x1)^.UTF8StringValue, обнаруживается следующее: в вызываемой функции GetCell используется функция FindCell, для поиска ячейки указанных координат. Эта функция окрашенную ячейку не находит и возвращает nil.

Если текст сохранить как ods, тогда да, всё читает (правда в 100 раз медленней), но блин, это ж морока, всякий раз это делать.

И что делать?
sign
энтузиаст
 
Сообщения: 961
Зарегистрирован: 30.08.2009 09:20:53

Re: fpspreadsheet

Сообщение sign » 08.09.2011 07:36:50

А в ответ тишина.
:(
Кстати, обнаружил, что этот модуль просто не умет читать ёксельные файлы.
В моём примере просто совпало, другой цвет.
Взял другую таблицу - чтение ломается.
sign
энтузиаст
 
Сообщения: 961
Зарегистрирован: 30.08.2009 09:20:53


Вернуться в Сторонние средства

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru