zexmlss

export office xml

Когда наступает необходимость экспортировать данные из программы в табличный процессор, можно воспользоватся OLE. Но могут возникнуть проблемы, если на машине не установлен MS Office excel / OpenOffice Calc.

zexmlss - это библиотека, позволяющая создавать и загружать файлы формата excel 2002/2003 XML (SpreadsheetML / XML Spreadsheet) БЕЗ использования MS Office или Open Office.
Работает в Lazarus (проверено с Lazarus 0.9.28.2 и FPC 2.2.4 под Linux-ом и Windows XP), в Delphi 6, 7, 9-14 и C++Builder 6.

Лицензия: zlib

zexmlss 0.0.2 (бета, но рабочая)

Основные возможности:

  • Чтение/запись excel XML файлов в кодировках windows-1251, CP866, UTF-8, UTF-16 (Little Endian и Big Endian)
  • Возможность установить каждой ячейке свой стиль (цвет и толщину рамки, цвет и стиль заливки, шрифт и выравнивание)
  • Объединённые ячейки
  • Возможность устанавливать размер бумаги и отступы
  • Простое копирование ячеек в/из StringGrid (для ZColorStringGrid только в Delphi/C++Builder)
Пример использования:
//Не забываем подключить модули zexmlss и zexmlssutils в uses
procedure TForm1.Button1Click(Sender: TObject);
var
  sd: TSaveDialog;
  tz: TZEXMLSS;
  i, j: integer;

begin
  sd := TSaveDialog.Create(nil);
  sd.Filter := 'Excel XML (*.xml)|*.xml';
  sd.DefaultExt := 'xml';
  sd.Options := sd.Options + [ofOverwritePrompt];
  if sd.Execute then
  begin
    tz := TZEXMLSS.Create(nil);
    try
      //В документе 2 страницы
      tz.Sheets.Count := 2;
      tz.Sheets[0].Title := 'Пробный документ';
      //добавим стили
      tz.Styles.Count := 4;
      //0 - для заголовка (20)
      tz.Styles[0].Font.Size := 20;
      tz.Styles[0].Font.Style := [fsBold];
      tz.Styles[0].Font.Name := 'Tahoma';
      tz.Styles[0].BGColor := $CCFFCC;
      tz.Styles[0].CellPattern := ZPSolid;
      tz.Styles[0].Alignment.Horizontal := ZHCenter;
      tz.Styles[0].Alignment.Vertical := ZVCenter;
      tz.Styles[0].Alignment.WrapText := true;
      //1 - стиль для таблицы
      tz.Styles[1].Border[0].Weight := 1;
      tz.Styles[1].Border[0].LineStyle := ZEContinuous;
      for i := 1 to 3 do tz.Styles[1].Border[i].Assign(tz.Styles[1].Border[0]);
      //2 - стиль для заголовка таблицы (жирный по центру)
      tz.Styles[2].Assign(tz.Styles[1]);
      tz.Styles[2].Font.Style := [fsBold];
      tz.Styles[2].Alignment.Horizontal := ZHCenter;
      //3-ий стиль
      tz.Styles[3].Font.Size := 16;
      tz.Styles[3].Font.Name := 'Arial Black';
      with tz.Sheets[0] do
      begin
        //установим количество строк и столбцов
        RowCount := 20;
        ColCount := 20;
        Cell[0, 0].CellStyle := 3;
        Cell[0, 0].Data := 'Пример использования zexmlss';
        Cell[1, 1].CellStyle := 0;
        Cell[1, 1].Data := 'Таблица умножения';
        MergeCells.AddRectXY(1, 1, 10, 1);
        Cell[0, 5].CellStyle := 2;
        for i := 1 to 10 do
        begin
          Cell[0, 5 + i].CellStyle := 2;
          Cell[0, 5 + i].Data := inttostr(i);
          Cell[0, 5 + i].CellType := ZENumber;
          Cell[0 + i, 5].Assign(Cell[0, 5 + i]);
          for j := 1 to 10 do
          begin
            Cell[0 + i, 5 + j].CellStyle := 1;
            Cell[0 + i, 5 + j].Data := inttostr(i * j);
            Cell[0 + i, 5 + j].CellType := ZENumber;
          end;
        end;
        SheetOptions.PaperSize := 8; //A3
        SheetOptions.PortraitOrientation := false;
      end;
      //копируем данные с 0 на 1-ую страницу
      tz.Sheets[1].Assign(tz.Sheets[0]);
      tz.Sheets[1].Title := 'Таблица Пифагора (формулы)';
      //На второй странице будем использовать формулы.
      //Используем формулы вида R1C1
      with tz.Sheets[1] do
      for i := 1 to 10 do
      for j := 1 to 10 do
        Cell[0 + i, 5 + j].Formula := '=R6C*RC1'; // координаты в табличке на 1 больше
      //сохраняем 0-ую и 1-ую страницу в файл
      //кодировка - utf8, имя кодировки='utf8' (для utf8 можно ''), BOM=''
      SaveXmlssToEXML(tz, sd.FileName, [0, 1], [], @AnsiToUtf8, 'utf8');
    finally
      tz.free();
    end;
  end;
  sd.Free();
end;
Полученный файл, окрытый в экселе:
zexmlss test
Тут небольшая справка.

Оставить комментарий могут только зарегистрированные пользователи.

Войдите на сайт или зарегистрируйтесь, чтобы оставить комментарий.