Excel4Delphi
Read, Write excel 2002/2003 XML (SpreadsheetML / XML Spreadsheet) library.
fork from https://github.com/Avemey/zexmlss
Exchamples
// Creating new workbook var workBook: TZWorkBook; ... workBook := TZWorkBook.Create(); try workBook.Sheets.Add('My sheet'); workBook.Sheets[0].ColCount := 10; workBook.Sheets[0].RowCount := 10; workBook.Sheets[0].CellRef['A', 0].AsString := 'Hello'; workBook.Sheets[0].RangeRef['A', 0, 'B', 2].Merge(); workBook.SaveToFile('file.xlsx'); finally workBook.Free(); end
// Editing exists workbook var workBook: TZWorkBook; ... workBook := TZWorkBook.Create(); try workBook.LoadFromFile('file.xlsx'); workBook.Sheets[0].CellRef['A', 0].AsString := 'Hello'; workBook.Sheets[0].CellRef['A', 0].FontStyle := [fsBold]; workBook.SaveToFile('file.xlsx'); finally workBook.Free(); end
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Праздники ещё не закончились, работать лень, но надо как-то уже прекращать заниматься кишкоблудством и начинать работать в полную силу. Ну, а чтобы как-то себя расшевелить и начать уже работу в блоге, решил первый пост сделать простым — снова сказать несколько слов про Excel. Дело в том, что с момента выхода поста под названием «Работа с Excel в Delphi. Основы основ.» прошло практически полтора года и этот пост (почему-то вопреки всем ожиданиям) очень прочно закрепился в выдаче поисковиков. Это, конечно хорошо, но этот пост (читай название) дает лишь небольшое представление о том как работать с Excel в Delphi. Никто ведь не изучает сразу квантовую механику с первого класса? Сначала учимся основам вообще — математика, физика и т.д. Так я решил поступить в начале рассказа про Excel — сначала дать общее представление, а потом потихоньку раскрывать тему более подробно и детально. Но поисковики немного спутали карты, подняв пост выше других про Excel. Соответственно, те из посетителей, кто уже имеют представление о работе с Excel, видя представленные в статье примеры, возмущаются по поводу того, что чтение данных в этом случае будет происходить медленно. И я не спорю, да проход по каждой ячейке листа — это жуткие тормоза. А ускорить процесс чтения можно и необходимо. Поэтому можно считать, что эта статья — расширение к основам.
За полтора года мне предлагали кучу вариантов того как ускорить чтение данных с листа Excel — от использования MSXML и других готовых библиотек до самопальных процедур и функций. Что ж, любую задачу можно решить несколькими способами. Рассмотрим несколько вариантов и определимся какой из вариантов окажется наиболее быстрым. Ну, а какой вариант окажется более удобным — это уже каждый решит для себя сам.
Вначале рассмотрим вариант чтения данных использованием которого грешат те, кто только начинает свое знакомство с Excel в Delphi — чтение данных из каждой ячейки по отдельности. Тестовая процедура с таким вариантом чтения может выглядеть следующим образом:
procedure TForm16.SlowVariant; var Rows, Cols, i,j: integer; WorkSheet: OLEVariant; d: TDateTime; begin //открываем книгу ExcelApp.Workbooks.Open(edFile.Text); //получаем активный лист WorkSheet:=ExcelApp.ActiveWorkbook.ActiveSheet; //определяем количество строк и столбцов таблицы Rows:=WorkSheet.UsedRange.Rows.Count; Cols:=WorkSheet.UsedRange.Columns.Count; StringGrid1.RowCount:=Rows; StringGrid1.ColCount:=Cols; //засекаем время начала чтения d:=Now; //выводим данные в таблицу for I := 0 to Rows-1 do for j := 0 to Cols-1 do StringGrid1.Cells[J,I]:=WorkSheet.UsedRange.Cells[I+1,J+1].Value; Label2.Caption:='Время чтения всего листа: '+FormatDateTime('hh:mm:ss:zzz', Now()-d); end;
Счётчик будет в итоге содержать время чтения и вывода в StringGrid данных. Можно было бы сделать счётчик исключительно на чтение данных с листа, но я решил не перегружать исходник лишними переменными. Если будет желание — можете переписать чуть-чуть исходник и получить «чистое» время чтения.
Для теста этого варианта был создан лист Excel, содержащий 143 строки и 142 столбца с данными, т.е. 20306 ячеек с данными. На рисунке ниже представлено значение счётчика после чтения данных:
12 секунд на чтение…а если будет 1000 строк и 1000 столбцов? Так можно и не дождаться окончания операции.
Если внимательно посмотреть на процедуру, представленную выше, то можно видеть, что в цикле мы каждый раз при каждой итерации вначале получаем диапазон, занятый данными, затем в этом диапазоне получаем определенную ячейку и только потом считываем значение в ячейке. На самом деле столько лишних операций для чтения данных с листа не требуется. Тем более, когда данные располагаются непрерывным массивом. Более выгодным в этом случае вариантом чтения будет чтение данных сразу из всего диапазона в массив.
На деле реализация этого варианты работы окажется даже проще, чем представленного выше. Смотрите сами. Вот вариант чтения данных целым диапазоном:
procedure TForm16.RangeRead; var Rows, Cols, i,j: integer; WorkSheet: OLEVariant; FData: OLEVariant; d: TDateTime; begin //открываем книгу ExcelApp.Workbooks.Open(edFile.Text); //получаем активный лист WorkSheet:=ExcelApp.ActiveWorkbook.ActiveSheet; //определяем количество строк и столбцов таблицы Rows:=WorkSheet.UsedRange.Rows.Count; Cols:=WorkSheet.UsedRange.Columns.Count; //считываем данные всего диапазона FData:=WorkSheet.UsedRange.Value; StringGrid1.RowCount:=Rows; StringGrid1.ColCount:=Cols; //засекаем время начала чтения d:=Now; //выводим данные в таблицу for I := 0 to Rows-1 do for j := 0 to Cols-1 do StringGrid1.Cells[J,I]:=FData[I+1,J+1]; Label2.Caption:='Время чтения всего листа: '+FormatDateTime('hh:mm:ss:zzz', Now()-d); end;
Здесь мы ввели всего одну переменную FData типа Variant. В эту переменную мы прочитали за 1 операцию весь диапазон, занятый данными. После того как диапазон прочитан FData будет содержать матрицу, каждый элемент которой будет типом данных, определенным в Excel.
Смотрим на время выполнения операции:
Как видите, прирост скорости оказался колоссальным, учитывая даже то, что в счётчик попало время обновления StringGrid’а.
Здесь было бы уместно показать и обратный метод работы с Excel, т.е. запись данных на лист Excel с использованием вариантного массива.
Запись данных в Excel
В случае, если нам необходимо записать большой объем данных на лист Excel нам необходимо провести обратную операцию, т.е. вначале создать вариантный массив, затем записать в этот массив данные после чего записать весь массив одной операцией в Excel. Для примера я написал процедуру, которая считывает большой объем данных из StringGrid и записывает эти данные на второй лист открытой книги Excel:
procedure TForm16.WriteData; var i,j: integer; FData: Variant; Sheet,Range: Variant; begin //создаем вариантный массив FData:=VarArrayCreate([1,StringGrid1.RowCount,1,StringGrid1.ColCount],varVariant); //заполняем массив данными из StringGrid for i:=1 to VarArrayHighBound(FData,1) do for j:=1 to VarArrayHighBound(FData,2) do FData[i,j]:=StringGrid1.Cells[J-1,I-1]; {активируем второй лист книги} //открываем книгу ExcelApp.Workbooks.Open(edFile.Text); //активируем Sheet:=ExcelApp.ActiveWorkBook.Sheets[2]; Sheet.Activate; //выделяем диапазон для вставки данных Range:=Sheet.Range[Sheet.Cells[1,1],Sheet.Cells[VarArrayHighBound(FData,1),VarArrayHighBound(FData,2)]]; //вставляем данные Range.Value:=FData; //показываем окно Excel ExcelApp.Visible:=True; end;
Здесь мы вначале создаем двумерный вариантный массив, используя метод VarArrayCreate, после чего заполняем массив данным и передаем этот массив в Excel. Обратите внимание, что при записи в Excel не используются никакие циклы — запись происходит в 2 простых действия:
- выделяем диапазон, используя в качестве границ диапазона первую и последнюю ячейки
- присваиваем диапазону значение из массива.
Для полноты картины ниже на рисунке представлено значение счётчика, который отсчитал время от момента создания массива до активации приложения Excel включительно:
Естественно, что с ростом объема данных будет расти и время выполнения операции. Так, например, лист, содержащий 1000 строк и 256 столбцов с данными заполнялся около 7 секунд. Если для Вас такое время неприемлемо, то представленная выше процедура может быть немного ускорена использованием пары методов VarArrayLock() и VarArrayUnLock(), но при этом следует учитывать, что матрица FData будет транспонирована.
Что ещё стоит сказать по поводу чтения/записи данных в Excel? Наверное то, что предложенные выше методы работы в обязательном порядке требуют наличия установленного Excel на том компьютере где запускается Ваша программа. В связи с этим обстоятельством может потребоваться более универсальный способ работы с Excel. Здесь, опять же, может быть несколько вариантов работы, но я покажу, а точнее укажу только на один из них — с использованием библиотека XLSReadWrite.
Про эту библиотеку мне поведал один из читателей блога в комментарии как раз-таки к посту «»Работа с Excel в Delphi. Основы основ«. Чтобы лишний раз Вас не переправлять на комментарий с примером использования этой библиотеки, я с разрешения GS (ник автора кода) просто опубликую здесь уже готовые примеры использования библиотеки XLSReadWrite:
Упрощенный пример для Delphi 7
var IntlXls: TXLSReadWriteII2; I, J: Integer; begin // создаем объект IntlXls := TXLSReadWriteII2.Create(nil); // название книги IntlXls.Sheets[0].Name := ‘ Название моего отчета ’; // добавляем необходимое количество строк и колонок IntlXls.Sheets[0].Rows.AddIfNone(0, 10000); IntlXls.Sheets[0].Columns.AddIfNone(0, 100); // добавляем и заносим ширины ячеек (значение в пикселях) for I := 0 to 99 do IntlXls.Sheets[0].Columns[I].PixelWidth := 150; // заносим высоты строк (значение здесь не в пикселях, поэтому нужно корректировать) for I := 0 to 9999 do IntlXls.Sheets[0].Rows[I].Height := 20 * 14; // настраиваем for J := 0 to 9999 do for I := 0 to 99 do begin // заносим числовое значение // если нужно например занести строку, то использовать AsString IntlXls.Sheets[0].AsFloat[I, J] := J + I / 100; // выравнивание по горизонтали (доступно chaLeft, chaCenter, chaRight) IntlXls.Sheets[0].Cell[I, J].HorizAlignment := chaLeft; // выравнивание по вертикали (доступно cvaTop, cvaCenter, cvaBottom) IntlXls.Sheets[0].Cell[I, J].VertAlignment := cvaTop; // шрифт IntlXls.Sheets[0].Cell[I, J].FontName := ‘ Arial ’; IntlXls.Sheets[0].Cell[I, J].FontSize := 12; IntlXls.Sheets[0].Cell[I, J].FontStyle := []; IntlXls.Sheets[0].Cell[I, J].FontColor := TColorToClosestXColor(clBlue); IntlXls.Sheets[0].Cell[I, J].Rotation := 0; // жирное начертание with IntlXls.Sheets[0].Cell[I, J] do FontStyle := FontStyle + [xfsBold]; // наклонное начертание with IntlXls.Sheets[0].Cell[I, J] do FontStyle := FontStyle + [xfsItalic]; // цвет фона IntlXls.Sheets[0].Cell[I, J].FillPatternForeColor := TColorToClosestXColor(clYellow); // бордюр слева (аналогично и остальные бордюры) IntlXls.Sheets[0].Cell[I, J].BorderLeftColor := TColorToClosestXColor(clBlack); IntlXls.Sheets[0].Cell[I, J].BorderLeftStyle := cbsThin; // объединение ячеек (здесь объединяются две ячейки по горизонтали) if I = 49 then IntlXls.Sheets[0].MergedCells.Add(I, J, I + 1, J); end; IntlXls.SaveToFile(‘ c: demo.xls ’); IntlXls.Free; end;
Полный пример работы с библиотекой:
function ExportToExcelXls(var AFileName: string): Integer; var IntlXls: TXLSReadWriteII2; IntlCol: Integer; IntlRow: Integer; IntlMainCol: Integer; IntlMainRow: Integer; begin // инициализируем статус prgrbrStatus.Max := FLinkReport.RowCount; prgrbrStatus.Position := 0; pnlStatus.Visible := TRUE; pnlStatus.Refresh; // добавлено в конце имени файла расширение ‘.XLS’? if Length(AFileName) < 5 then // добавляем AFileName := AFileName + ‘.xls ’ else if AnsiCompareText(Copy(AFileName, Length(AFileName)— 3, 4), ‘.xls ’) <> 0 then // добавляем AFileName := AFileName + ‘.xls ’; // файл уже существует? if FileExists(AFileName) then // спросим if Application.MessageBox (PChar(‘ Файл « ‘ + AFileName + ‘ » уже существует.Перезаписать ? ’), ‘ Внимание ’, MB_TASKMODAL + MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) <> IDYES then // выходим begin // код ошибки Result := UNIRPT_GENERATE_ABORT; // выходим Exit; end; // if // создаем объект IntlXls := TXLSReadWriteII2.Create(nil); // все делаем защищаясь try // название книги IntlXls.Sheets[0].Name := FLinkReport.Caption; // добавляем необходимое количество строк и колонок IntlXls.Sheets[0].Rows.AddIfNone(0, FLinkReport.Cells.RowCount + 1); IntlXls.Sheets[0].Columns.AddIfNone(0, FLinkReport.Cells.ColCount + 1); // добавляем и заносим ширины ячеек for IntlCol := 0 to FLinkReport.Cells.ColCount — 1 do IntlXls.Sheets[0].Columns[IntlCol].PixelWidth := FLinkReport.ColWidths[IntlCol]; // заносим высоты строк for IntlRow := 0 to FLinkReport.Cells.RowCount — 1 do IntlXls.Sheets[0].Rows[IntlRow].Height := FLinkReport.RowHeights [IntlRow] * 14; // проходим по всем строкам for IntlRow := 0 to FLinkReport.Cells.RowCount — 1 do begin // проходим по всем колонкам for IntlCol := 0 to FLinkReport.Cells.ColCount — 1 do begin // определяем главную ячейку IntlMainCol := IntlCol + FLinkReport.Cells[IntlCol, IntlRow].Range.Left; IntlMainRow := IntlRow + FLinkReport.Cells[IntlCol, IntlRow].Range.Top; // заносим оформление with FLinkReport.Cells[IntlMainCol, IntlMainRow] do begin // главная ячейка? if (IntlMainCol = IntlCol) and (IntlMainRow = IntlRow) then // да, заносим текст и его оформление begin // значение try // если значение — число то заносим его как число IntlXls.Sheets[0].AsFloat[IntlCol, IntlRow] := StrToFloat(Value); except // иначе заносим его как строку IntlXls.Sheets[0].AsString[IntlCol, IntlRow] := Value; end; // выравнивание по горизонтали case HorizAlign of haLeft: // выравнивание слева IntlXls.Sheets[0].Cell[IntlCol, IntlRow].HorizAlignment := chaLeft; haCenter: // выравнивание по центру IntlXls.Sheets[0].Cell[IntlCol, IntlRow].HorizAlignment := chaCenter; haRight: // выравнивание справа IntlXls.Sheets[0].Cell[IntlCol, IntlRow].HorizAlignment := chaRight; end; // case // выравнивание по вертикали case VertAlign of vaTop: // выравнивание сверху IntlXls.Sheets[0].Cell[IntlCol, IntlRow].VertAlignment := cvaTop; vaCenter: // выравнивание в центре IntlXls.Sheets[0].Cell[IntlCol, IntlRow].VertAlignment := cvaCenter; vaBottom: // выравнивание снизу IntlXls.Sheets[0].Cell[IntlCol, IntlRow].VertAlignment := cvaBottom; end; // case // шрифт IntlXls.Sheets[0].Cell[IntlCol, IntlRow].FontName := Font.Name; IntlXls.Sheets[0].Cell[IntlCol, IntlRow].FontSize := Font.Size; IntlXls.Sheets[0].Cell[IntlCol, IntlRow].FontCharset := Font.Charset; IntlXls.Sheets[0].Cell[IntlCol, IntlRow].FontStyle := []; IntlXls.Sheets[0].Cell[IntlCol, IntlRow].FontColor := TColorToClosestXColor(Font.Color); IntlXls.Sheets[0].Cell[IntlCol, IntlRow].Rotation := Font.Angle; // есть жирное начертание? if Font.IsBold then // есть with IntlXls.Sheets[0].Cell[IntlCol, IntlRow] do FontStyle := FontStyle + [xfsBold]; // есть наклонное начертание? if Font.IsItalic then // есть with IntlXls.Sheets[0].Cell[IntlCol, IntlRow] do FontStyle := FontStyle + [xfsItalic]; // цвет фона if Color <> clWindow then // цвет задан IntlXls.Sheets[0].Cell[IntlCol, IntlRow].FillPatternForeColor := TColorToClosestXColor(Color); end // if else // просто активизируем ячейку (иначе ниже невозможно добавить бордюры) IntlXls.Sheets[0].AsString[IntlCol, IntlRow] := »; // бордюр слева есть? with Borders.Left do if LineHeight > 0 then // настраиваем begin // цвет IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderLeftColor := TColorToClosestXColor(Color); // толщина if LineHeight = 1 then // тонка IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderLeftStyle := cbsThin else if LineHeight in [1, 2] then // средняя толщина IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderLeftStyle := cbsMedium else // толстая IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderLeftStyle := cbsHair; end; // if, with // бордюр сверху есть? with Borders.Top do if LineHeight > 0 then // настраиваем begin // цвет IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderTopColor := TColorToClosestXColor(Color); // толщина if LineHeight = 1 then // тонка IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderTopStyle := cbsThin else if LineHeight in [1, 2] then // средняя толщина IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderTopStyle := cbsMedium else // толстая IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderTopStyle := cbsHair; end; // if, with // бордюр справа есть? with Borders.Right do if LineHeight > 0 then // настраиваем begin // цвет IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderRightColor := TColorToClosestXColor(Color); // толщина if LineHeight = 1 then // тонка IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderRightStyle := cbsThin else if LineHeight in [1, 2] then // средняя толщина IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderRightStyle := cbsMedium else // толстая IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderRightStyle := cbsHair; end; // if, with // бордюр снизу есть? with Borders.Bottom do if LineHeight > 0 then // настраиваем begin // цвет IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderBottomColor := TColorToClosestXColor(Color); // толщина if LineHeight = 1 then // тонка IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderBottomStyle := cbsThin else if LineHeight in [1, 2] then // средняя толщина IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderBottomStyle := cbsMedium else // толстая IntlXls.Sheets[0].Cell[IntlCol, IntlRow].BorderBottomStyle := cbsHair; end; // if, with // объединение нужно? if ((Range.Width > 1) or (Range.Height > 1)) and ((IntlMainCol = IntlCol) and (IntlMainRow = IntlRow)) then // объединяем IntlXls.Sheets[0].MergedCells.Add(IntlCol, IntlRow, IntlCol + Range.Width — 1, IntlRow + Range.Height — 1); // пользователь нажал кнопку прерывания экспорта? if btnCancel.Tag = 2 then // да, выходим Break; end; // with end; // for // обновляем статус prgrbrStatus.Position := prgrbrStatus.Position + 1; Application.ProcessMessages; // пользователь нажал кнопку прерывания экспорта? if btnCancel.Tag = 2 then // да, выходим Break; end; // for // пользователь нажал кнопку прерывания экспорта? if btnCancel.Tag <> 2 then // нет begin // на левый верхний угол IntlXls.Sheet[0].TopRow := 0; IntlXls.Sheet[0].LeftCol := 0; IntlXls.Sheet[0].Selection.ActiveRow := 0; IntlXls.Sheet[0].Selection.ActiveCol := 0; // статус prgrbrStatus.Position := prgrbrStatus.Max; Application.ProcessMessages; // записываем в файл IntlXls.FileName := AFileName; IntlXls.Write; // все успешно Result := UNIRPT_OK; end // if else // да Result := UNIRPT_GENERATE_ABORT; finally // освобождаем память IntlXls.Free; end; // try..finally end; // function ExportToExcelXls
Вот такой подробный пример предоставил нам GS в своем комментарии. Спасибо ему за это. Мне же в заключении остается только добавить и подчеркнуть, что самые правильные ответы и примеры к вопросам, касающимся работы с Excel содержаться в Справке для разработчиков в самом Excel и надо только воспользоваться поиском. Например, если вам довольно часто приходится перетаскивать данные из базы данных в Excel и в работе используется ADO, то специально для таких случаев в справке рассказывается про интересный метод объекта Range под названием CopyFromRecordset, а если вам надо разукрасить свою таблицу Excel в разные цвета и установить разные виды границ ячеек, то специально для таких случаев в справке приводится подробные перечень всех перечислителей Excel’я. В общем много чего есть — надо только этим воспользоваться и все получится. Ну, а если не получится, то милости прошу — задавайте вопросы здесь или на нашем форуме.
Книжная полка
Название:Разработка приложений Microsoft Office 2007 в Delphi Описание Описаны общие подходы к программированию приложений MS Office. Даны программные методы реализации функций MS Excel, MS Word, MS Access и MS Outlook в среде Delphi. |
3.7
3
голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
QuickSearch Results
Found 26 records. Shown from 1 to 21.
Advanced CSV Converter v.6.39
Database Tools > Cross Database Tools > Export, Import, Conversion
Description
Advanced CSV Converter is a powerful and user-friendly application which allows you to convert any CSV files into a wide variety of other formats including XLS, XLSX, DBF, SQL, HTML, Fixed Text and various other common document and database formats. Ten output formats in total are supported. When you want to convert a file, you can use the wizard-driven interface to get the job done quickly and efficiently. All you need to do is choose the original CSV file, choose the format for the output file and then choose a target folder.
You can also customize the conversion process by selecting columns which you want to prevent from being converted and placed in the output file. Thanks to its well-written and especially efficient algorithm, converting files with Advanced CSV Converter is fast and accurate. You will not lose any important data once it is converted. Extra features included are a batch conversion mode and command line support for more advanced users.
Advanced CSV Converter is available for all versions of Windows, including 64-bit editions.
Informations
- Status: Partially restricted
- Source: None
- price: $39.95
- Size: 2 357kB
Platforms: ME, NT4, Vista, W10, W2K3, W2K8, W7, W8, XP,
Advanced XLS Converter v.5.35
Database Tools > Cross Database Tools > Other
Description
Convert Excel files into a variety of formats. Advanced XLS Converter converts Microsoft Excel spreadsheets (XLS, XLSX, XLSM) into DBF, TXT, Fixed Text, HTML, XML, CSV, SQL, and RTF formats with just a few clicks. Depending on the destination format, complex formatting, calculations and dynamic formulas can be preserved. No need to have Microsoft Excel installed for using Excel Converter.
Informations
- Status: Partially restricted
- Source: None
- price: $29.95
- Size: 2 296kB
Platforms: ME, NT4, Vista, W10, W2K, W2K3, W2K8, W7, W8, W95, W98, XP,
AnyChart JS Charts and Dashboards v.8.7.0
Components > Charts and Graphs > Charts
Description
AnyChart is a robust and superfast JavaScript charting library to add great-looking, interactive HTML5 charts into any project, in any browser, and on any platform/OS including mobile ones.
AnyChart provides advanced customization and flexibility opportunities, no matter if you are developing a website, a business intelligence application (BI) for corporate usage, or some software for your clients. Our JavaScript API makes it possible for you to create even big data based charts in real time, with continuous updates and multi-level drill-downs. Moreover, whatever server platform or database you use in your project, AnyChart is ready to fulfill your dream to surprise your customers with amazing informative JS charts and dashboards regardless of device — on Macs, laptops, PCs, smartphones, and tablets.
AnyChart provides scatter, line, bar, area, waterfall, spline, funnel, bubble, polar, column, column range, pie, box plot, linear and angular gauges, area spline range, Mekko, Venn, Sankey Diagram, waterfall, quadrant, tag cloud, and lots of other sorts of charts available separately and in combination, 2D and 3D.
In a nutshell, AnyChart HTML5 chart library’s advantages boil down to the following out-of-the-box features:
* 60+ chart types;
* chart design themes and color palettes;
* chart export to PDF, PNG, JPG, SVG, PS, chart data export to CSV and XLSX (Excel), social network sharing;
* many web app samples with interactive BI dashboards;
* localization engine (194 predefined locale files),
as well as advanced interactivity (tooltips on hover, drill-down, exclude data point, multi-selection, and more), multiple axes, async rendering, online chart editor, and much more to easily create beautiful interactive JS data visualization for any web projects.
Informations
- Status: Fully functional
- Source: None
- price: $49
- Size: 18 235kB
Platforms: CB3, CB4, CB5, CB6, D2005, D6, D7
Bytescout Spreadsheet SDK v.2.70.1553
Components > Component Packs > Other
Description
Read and write XLS, XLSX from ASP.NET, .NET, VB, C#, PHP and other programming languages without Excel installed. Supports formula calculations, text formatting, rows, columns, sheets management and much more. Can be used from legacy Visual Basic 6 and ASP classic, Delphi through special ActiveX wrapper with improved XLS and XLSX formats support and formula calculations
Technical details:
# 150+ source code samples ready to copy and paste from.
# Writing for XLS, HTML, TXT, CSV, XML support;
# Exports to PDF without any other libraries required;
# Reading for CSV, XLS (Office 97-2010), XLSX (Office 2007-2010) and ODS (Open Office Calc) support;
# Formula calculations (standard functions, add-in formula like XIRR) support;
# Can be used in Visual C#, Visual Basic.NET and ASP.NET;
# Cells, columns, rows, worksheets support;
# Unicode support;
# 12 chart types supported;
# Cell formatting (font, color, border style, alignment) is supported;
# Capable of changing existing Excel documents (change data and save modified document, add or remove rows, columns);
# Export XLS into CSV, TXT, HTML and XML, PDF;
# Reads Excel files into dataset;
# Convert spreadsheets from command line or .bat command files using Spreadsheet SDK Console version.
Informations
- Status: Fully functional
- Source: None
- price: $10
- Size: 20 373kB
Platforms: D7
C# Create XLSX File v.2023.1.14
.NET > Miscellaneous > Other
Description
Too often, business clients and individual users are left in the cold, having to find additional software to enjoy the many features they want out of an application. Instead of forcing your users to hunt for an alternative, stick with a simplified, free-to-use developmental tool that brings full spreadsheet features into your project build and download C# Create XLSX File from IronSoftware today.
Informations
- Status: Fully functional
- Source: None
- price: $749
- Size: 20 408kB
Platforms: C#, C#B1, D2005, D2006, D2007, P2009, S2005, S2008, S2010
Convert XLS to XLSX C# v.2022.9.9454
.NET > Miscellaneous > Other
Description
When you want to add Excel-like tools to your next C# .NET project build, but do not want the expense or complexity of solutions like Microsoft Excel and Excel Interlop, rely on the expertise from IronSoftware’s new tool Convert XLS to XLSX C#. This easy-to-use enhancement is 100% free while you are still in the development mode of your project’s timeline. You only pay for a license when you are ready for deployment.
Informations
- Status: Fully functional
- Source: None
- price: $499
- Size: 9 342kB
Platforms: C#, C#B1, D2005, D2006, D2007, P2009, S2005, S2008, S2010
Direct Office v.4.1
Components > System > Apps Communications
Description
Delphi Open XML library for processing .docx, .pptx and .xlsx documents.
- create or modify Word Document .docx files
- create or modify PowerPoint Presentation .pptx files
- create or modify Excel Workbook .xlsx files
- Microsoft Office installation is not required
- uses Microsoft Open XML SDK 2.12.1
- requires Microsoft .NET Framework 4.0 or higher
- supports Windows 32 and Windows 64
- available for Delphi 7 — 10.4
- royalty free distribution in applications
Informations
- Status: With Nag-Screen
- Source: On purchase/registration
- price: $120
- Size: 3 270kB
Platforms: D10, D10.1, D10.2, D10.3, D10.4, D2005, D2006, D2007, D2009, D2010, D7, DXE, DXE2, DXE3, DXE4, DXE5, DXE6, DXE7, DXE8
Exportizer Enterprise v.8.0.7
Database Tools > Cross Database Tools > Export, Import, Conversion
Description
Exportizer Enterprise is a database export tool. It allows to export data to database, file, clipboard, or printer.
Supported source data types:
- Local file databases like Paradox (.db), dBase (.dbf), FoxPro (.dbf), text, CSV, or XML (with some limitations)
- ODBC data sources
- Multi-table files like MS Excel (.xls, .xlsx, .xlsmb, .xlsm), HTML (.html, .htm)
- Multi-table file databases like Visual FoxPro (.dbc), MS Access (.mdb, .accdb), Interbase (.gdb, .ib), Firebird (.fdb), SQLite
- Databases specified by ADO connection strings
- Oracle, SQL Server, Postgresql, DB2, Informix, Advantage Database Server, SQL Anywhere, MySQL databases
Supported destination data types:
- File formats like text, CSV, XLS, RTF, XML, HTML, PDF, DBF, SLK, SQL script (with INSERT, UPDATE, MERGE, or DELETE statements)
- Additional file formats like XLSX or JSON
- ODBC data sources
- Relational databases of any supported source type (see the list above)
- Files of any types from database BLOB and CLOB columns (see below)
It is possible to export all or selected tables from an open database at once.
Exportizer Enterprise can automatically detect the most known image types (JPEG, PNG, GIF, BMP, ICO) in BLOB fields and export them, for example, to HTML or Excel. BLOB and CLOB data can be exported into individual files.
There is an ability to specify the source-to-target field mappings.
Export operations can be performed either via the program interface or via command line with large number of parameters. You can easily generate needed command line directly from the GUI. It is possible to copy data to clipboard or print them.
Informations
- Status: Fully functional
- Source: N/A
- price: $49
- Size: 5 021kB
Platforms: Vista, W10, W2K3, W2K8, W7, W8, XP,
Exportizer Pro v.6.3.0
Database Tools > Cross Database Tools > Export, Import, Conversion
Description
Exportizer Pro is a database export tool. It allows to export data to database, file, clipboard, or printer. Exportizer Pro can open ODBC data sources, files of DB, DBF, MDB, ACCDB, XLS, XLSX, GDB, FDB, HTML, UDL, DBC, TXT, CSV types, and databases of other types like Oracle, SQL Server, PostgreSQL, Interbase, Firebird, SQLite etc. Data can be exported to many file formats like text, CSV, XLS, RTF, XML, HTML, DBF, SQL scripts, and to another database.
It is possible to export all or selected database files from a folder or all or selected tables from a database at once.
Exportizer Pro can automatically detect the most known image types (JPG, PNG, GIF, BMP, ICO) in BLOB fields and export them, for example, to HTML.
Many export options ensure full control over output. There is an ability to specify the source-to-target field mappings.
Export operations can be performed either via the program interface or via command line with large number of parameters. You can easily generate needed command line directly from the GUI.
It is possible to copy data to clipboard or print them.
There are several utility functions for data manipulating and bookmarking.
Informations
- Status: Evaluation (time-limit)
- Source: None
- price: $29
- Size: 3 315kB
Platforms: Vista, W10, W2K3, W2K8, W7, W8, XP,
Flexcel Studio for .NET v.6.6.23.0
.NET > Reports > Report Tools
Description
The powerful suite for native Excel and PDF file and Excel and PDF report generation.
Feature summary:
- Generates Excel files from WinForms, WebForms ASP.NET, PocketPC applications, webservices on the fly and fast with FlexCel Studio for .NET
- Native .NET components (no additional OLE/dlls required) allowing to read, create and modify native Excel (XLS) files without needing to have Excel installed. Supported Excel 97 file formats and up.
- Native PDF file export
- Exceptionally fast and solid hand tuned XLS engine capable of generating thousands files per minute.
- Able to modify XLS files and keep almost everything existing on the original file, from macros to ActiveX objects.
- Recalculation of more than 300 Excel functions.
- Ability to read and write encrypted .XLS and .XLSX files, including Office 2007, 2010 and 2013 encryption
- Completely written in C# 100% managed code, with no interop and no p/invokes.
- Runs on .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, Windows Phone 8.1, Windows Store 8.1, Xamarin.iOS, Xamarin.Android, Xamarin.Mac and Mono.
- Templates can be stored inside your executable file, in a database or in any place from where you can access it as a stream.
- Extensive API is available with which you can programmatically write and read files, with formatting info, images comments, etc.
- Export to HTML in HTML 5 strict or XTHML 1.1 and fully standards compliant
- Export to SVG
- Report Engine that allows to create complex reports using Excel as your report designer, so your final users can modify them. You can use images/comments/conditional formats/merged cells/pivot tables/charts and almost anything you can think of on those reports.
Informations
- Status: Trial (work while IDE is running)
- Source: On purchase/registration
- price: $190
- Size: 74 042kB
Platforms: S2005, S2008, S2010, S2012, S2013, S2015
KA Export XE v.1.0
DB-Aware Components > Other > Tables
Description
KAExport is a VCL component giving the programmer ability to export tabular data in one of following popular data formats:
- — Microsoft Excel Workbook (*.xls)
- — Microsoft Excel 2007 Workbook (*.xlsx)
- — Microsoft Excel 2007 Binary Workbook (*.xlsb)
- — Microsoft Access 2007 (*.accdb)
- — Microsoft Access (*.mdb)
- — Paradox 7.X (*.db)
- — dBase 5.0 (*.dbf)
- — Web Page (*.htm)
- — XML Data (*.xml)
- — Advanced Data TableGram ADTG (*.adt)
Export is done by Microsoft Access Database Engine so it is 100% compatible
with Microsoft Office products
The following Delphi tabular data components are supported
- — Any TDataset descendant
- — Any TDBGrid descendant
- — Any TListview descendant
- — Any TStringGrid descendant
— KAExport supports both full and parial export of data in the tabular components
— KAExport automatically detects column types even in no database driven tabular components such as TListView and TStringGrid
Can run with x32 or x64 bit windows.
Cannot run x32 and x64 app on same machine. (Microsoft’s limitation)
Informations
- Status: Demo only
- Source: On purchase/registration
- price: $44
- Size: 1 573kB
Platforms: D10, DXE4, DXE5, DXE6, DXE7, DXE8
KADao v.11.0
DB-Aware Components > Direct DB Access > MS Other
Description
KADao is a native DAO component for Delphi.
It is the first freeware component to completly access all databases supported by
Microsoft DAO (Data Access Objects) including mdb, xls, dbf etc..
BDE is not required. Microsoft DAO must be Installed in order component to run.
Support for both Microsoft Access�97 and Microsoft Access�2000-2007.
Features:
- Create, Repair, Compact, Encrypt Access files
- Create tables, add indexes, and fields to existing tables and so on.
- Work as a Table and Query Component supporting both Queries and QueryDefs
- Compatible with all data aware controls
- Master/Detail support
- Locate, Lookup support
- Find_First, Find_Next, Find_Last, Find_Prior
- Seek_Nearest, Seek_NearestEx and many more …
- Now supporting Microsoft Access 2007 and Microsoft Excel 2007 *.accdb *xlsx *.xlsb file formats
- Now supporting Microsoft Access 2007 Multivalue fields (needs KADao Multivalue SubTable for displaying multivalue fields contents).
Informations
- Status: Fully functional
- Source: Included
- Size: 348kB
Platforms: CB3, CB4, CB5, CB6, D2005, D2006, D3, D4, D5, D6, D7
KADao Unicode v.2011
DB-Aware Components > Direct DB Access > MS Access
Description
KADao Unicode is a native DAO component for Delphi.
Now with full unicode support of ftWideString and ftWideMemo
It is the first freeware component to completly access all databases supported by
Microsoft DAO (Data Access Objects) including mdb, xls, dbf etc..
BDE is not required. Microsoft DAO must be Installed in order component to run.
Support for both Microsoft Access�97 and Microsoft Access�2000-2007.
Features:
- Create, Repair, Compact, Encrypt Access files
- Create tables, add indexes, and fields to existing tables and so on.
- Work as a Table and Query Component supporting both Queries and QueryDefs
- Compatible with all data aware controls
- Master/Detail support
- Locate, Lookup support
- Find_First, Find_Next, Find_Last, Find_Prior
- Seek_Nearest, Seek_NearestEx and many more …
- Now supporting Microsoft Access 2007 and Microsoft Excel 2007 *.accdb *xlsx *.xlsb file formats
- Now supporting Microsoft Access 2007 Multivalue fields (needs KADao Multivalue SubTable for displaying multivalue fields contents).
Informations
- Status: Fully functional
- Source: Included
- Size: 370kB
Platforms: D2009, D2010, DXE
KADaoXE v.12
DB-Aware Components > Direct DB Access > MS Access
Description
THE CLASSIC ACCESS DATASET COMPONENTS ARE BACK.
KADaoXE is a native DAO component for DelphiXE.
Now with full unicode support of ftWideString and ftWideMemo
Now with full support of both 32/64 bit targets
BDE is not required. Microsoft DAO must be Installed in order component to run.
Support for both Microsoft Access�97 and Microsoft Access�2000-2007.
Features:
- Create, Repair, Compact, Encrypt Access files
- Create tables, add indexes, and fields to existing tables and so on.
- Work as a Table and Query Component supporting both Queries and QueryDefs
- Compatible with all data aware controls
- Master/Detail support
- Locate, Lookup support
- Find_First, Find_Next, Find_Last, Find_Prior
- Seek_Nearest, Seek_NearestEx and many more …
- Now supporting Microsoft Access 2007 and Microsoft Excel 2007 *.accdb *xlsx *.xlsb file formats
- Now supporting Microsoft Access 2007 Multivalue fields (needs KADao Multivalue SubTable for displaying multivalue fields contents).
Informations
- Status: Demo only
- Source: On purchase/registration
- price: $122
- Size: 3 389kB
Platforms: DXE4, DXE5, DXE6, DXE7, DXE8
oExport — Native XLSX/ODS import/export Delphi Library v.2.14
DB-Aware Components > DB Access > Export and Import
Description
Create and read Excel 2007 (xlsx), OpenOffice Calc (ods), Excel 97-XP (xls) and CSV files directly from Delphi.
Features:
- no external dll libraries are required
- no dependency on Excel or Calc installation (no OLE)
- full unicode support even for D7, D2007
- supported cell types: string, number, percent, formula, time, date, datetime
- cell formatting: cell width+height, horizontal+vertical alignment, wrap text, font, background color, borders
- col/row span
- images, charts
- officially supported platforms: Delphi 7-XE5 VCL+FMX Win32, Win64, Mac OSX; Lazarus 1.0 Win32, Win64, Linux, Mac OSX.
Informations
- Status: Partially restricted
- Source: On purchase/registration
- price: $114
- Size: 17 030kB
Platforms: D2007, D2009, D2010, D7, DXE, DXE2, DXE3, DXE4, DXE5, DXE64, FM, FM2, FM3
Office XML v.2.3
Components > Miscellaneous > Other
Description
Delphi library for processing Excel .xlsx documents.
- create or modify Excel Workbook .xlsx files
- Microsoft Office installation is not required
- uses Microsoft Open XML SDK and ClosedXML libraries
- Microsoft .NET Framework 4.5 or higher required
- available for Delphi 7 — 10.3
- royalty free distribution in applications
Informations
- Status: With Nag-Screen
- Source: On purchase/registration
- price: $80
- Size: 1 876kB
Platforms: D10, D10.1, D10.2, D10.3, D2005, D2006, D2007, D2009, D2010, D7, DXE, DXE2, DXE3, DXE4, DXE5, DXE6, DXE7, DXE8
Paradox Converter v.2.95
Database Tools > Paradox > Export, Import, Conversion
Description
Paradox Converter enables users to convert Paradox files (DB files) to other formats, such as DBF, XLS, XLSX (Excel 2010), CSV, HTML, or SQL. To do so, the program offers a simple GUI interface, where you set the source and output folders and then specify the output settings. There is no need for users to mess around writing conversion scripts as in Paradox Converter the conversion task can be completed so easily in just a couple of clicks.
In addition to simple conversions, Paradox Converter allows you manipulate data by selecting only specific columns and applying filters. Unlike simplified filtering rules that
are normally available in other tools, Paradox Converter dynamically builds a sample database record form. The ability to put advanced masks and rules into any field of the sample record is one of the most valuable Paradox Converter features.
Converting Paradox files to other formats is very accurate. It�s also possible to sort by export. The converter supports batch conversion that lets users convert an unlimited number of DB files to another format at once with no need for the user to attend to the process. Another nice touch in the converter is command line support.
Informations
- Status: Partially restricted
- Source: None
- price: $29.95
- Size: 2 032kB
Platforms: ME, NT4, Vista, W10, W2K, W2K3, W2K8, W7, W8, W98, XP,
ParmisPDF Command line v.8.0
Developer Tools > Developer Tools > Other
Description
ParmisPDF command line is a complete industry-standard PDF tool designed to enable software developers to create PDF files and perform wide range of operation onto PDF documents.
ParmisPDF enables you to programmatically and dynamically control every aspects of the operations’ parameters.
ParmisPDF is 100% standalone and does not rely on external libraries. All the features are packed into a single executable file (Without any DLL, ActiveX and etc.). Silent execution mode enables developers to integrate ParmisPDF to applications seamlessly.
- Creating 100% Adobe Compatible PDF’s
- Convert MS-Word (.doc, .docx), MS-Excel file (xls/xlsx), .rtf, .txt to PDF
- Convert webpages (.html, .htm) to PDF
- Convert images (.jpg, .gif, .tif, .bmp, .png, .emf, .wmf) to PDF
- TrueType Font Support, Embedded Fonts Support, Unicode support
- Securing PDF Files to Prevent Unauthorized Access
- Set Open & Owner (Permission) passwords
- Control usage & permissions (viewing, printing, editing, filling forms, & copying)
- Digitally sign PDF files using digital certificates
- Securing PDFs in FIPS mode — ParmisPDF uses FISP certified system cryptographic modules (FIPS-140-2
compliant) for securing PDF documents and setting
permissions/restrictions. - Secure PDF documents using 128-bit RC4 or 128-bit AES encryption
- Bates numbering (Bates stamping) of PDF documents
- Find/Replace
- Case sensitive find/replace text in PDF documents
- Text Markup/Highlighting.
- Find text and replace it with an image
- Insert Watermark/Background and Stamp/Annotations
- Inset text/image content as watermark, background, stamp and header/footer
- Add File Name, Date/Time, Page Number, Total Pages & Meta Information
- Design custom & dynamic stamps
- Insert in specified pages
- Combine, Extract, Insert, Delete & Rotate
- Combine (Merge) files to a single PDF file
- Split (Extract), Add/Remove & Rotate one or a range of pages
- Flatten Forms & Annotations
- JavaScript
- Add/Remove JavaScript actions
- Batch Processing & Converting
- Perform series of operations on one or large number of files
- Command-Line Processing & Converting
- Run multiple commands through command line at once
- Flexible XML based command file
- Generate command file in GUI environment
- Silent mode operation
- Run multiple command files using .bat file
Informations
- Status: Evaluation (time-limit)
- Source: N/A
- Size: 8 330kB
Platforms: C2k10, C2k6, C2k7, C2k9, CB1, CB3, CB4, CB5, CB6, CBXE, CBXE2, CBXE3, D1, D2, D2005, D2006, D2007, D2009, D2010, D3, D4, D5, D7, DXE, DXE2, DXE3, DXE64
The C# Excel Library v.2022.12.10926
Developer Tools > Other Tools > Other
By Gatsby.
Shareware New 27 Nov 2019
Description
IronXL is a C# .NET software library allowing .net software engineers to read and write Excel XSLX, XLS, & CSV Spreadsheets in .NET Framework and .NET Core applications and websites. It is available from https://ironsoftware.com/csharp/excel/ It is also available on NuGet using the package name IronXL.Excel https://www.nuget.org/packages/IronXL.Excel/.
IronXL does not require use of Office Excel Interop and does not require Microsoft Excel to be installed on a server. All without other dependancies. A quick and natural approach to create Excel and Other Spreadsheet files in C# and VB.NET.
* Read / Import Data from XLS/XLSX/CSV/TSV.
* Export Excel WorkSheets to XLS/XLSX/CSV/TSV/JSON.
* Work with Spreadsheets as System.Data.DataSet and System.Data.DataTable.
* Excel Formulas recalculated each time a sheet it edited.
* Intuitive Ranges setting with a WorkSheet[‘A1:B10’] structure.
* Sort Ranges, Columns and Rows.
* Style Cells — Font, Size, Background design, Border, Alignment and Number formats.
IronXL .Net Excel Library works well in C#, VB .NET, MVC, ASP.NET, dotnet Core projects for Websites, Console & Desktop APPs. The C# Excel Library supports .Net Core 2.0 or above, .Net Standard as well as .Net Framework 4.5 or above. Installation on Microsoft Windows, Linux, MacOS, Xamarin, Mobile, Mono or cloud based services such as Azure and AWS.
The C# Excel Library features full online documentation, software tutorials, a NuGet installer, GitHub Repositories with examples, and technical support provided by the original development team. Tutorials available here: https://ironsoftware.com/csharp/excel/tutorials/how-to-read-excel-file-csharp/
Informations
- Status: Fully functional
- Source: None
- price: $749
- Size: 4 763kB
Platforms: CB3, CB4, CB5, CB6, D2005, D4, D6, D7
The C# XLSX Library v.2020.9
Developer Tools > Code > Other
By Smith.
Shareware New 03 Oct 2020
Description
The Excel class library for .NET Framework, Core, and Standard, has full support for the XLSX file format. We can use C# to read XLS files using IronXL, and indeed import data from them, including live formula updating. IronXL can also be used to create XLSX files or convert old XLS files to XLSX files and vice versa. It can, in addition, import CSV, TSV, JSON, XML, and native class objects within C# to and from Excel workbooks.
Informations
- Status: Fully functional
- Source: None
- price: $399
- Size: 7 396kB
Platforms: CB3, CB4, CB5, CB6, D2005, D4, D6, D7
OExport allows you to generate and read XLSX, XLS, ODS and CSV spreadsheets directly from Delphi & Lazarus.
It has also an import feature — you can extract data from XLSX, XLS, ODS and CSV files.
Please see the feature matrix below for more details.
- Features
- Screenshots
- License
- Order
- Downloads
- Change log
Features
Library design
- Native pascal object oriented code
- No external dll libraries are required
- No dependency on Excel or Calc installation (no OLE)
- Full unicode support even for non-unicode Delphi versions (D7, D2007 etc.)
- Write-On-The-Fly and Read-On-The-Fly: export and import huge tables without the need to store the whole document in memory.
- Reasonably fast (see performance table below).
Officially supported platforms
- Delphi 5, 6, 7, 2005, 2006, 2007: VCL + full unicode support thanks to WideString.
- Delphi 2009, 2010, XE: VCL
- Delphi XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin: VCL + FireMonkey, 32bit + 64bit Windows, Mac OSX.
Important notice: Delphi ARM compiler (iOS) was not tested yet and may be unsupported. - Lazarus 1.0.8: 32bit + 64bit Windows, Linux and Mac OSX (XLS: Little Endian platforms only)
Template Engine
- Currently only loading of XLSX/XLTX and XLS/XLT templates is supported.
- Automatically replace cell values and modify cells.
- Automatically add and process rows as they are defined in the template.
- Save the generated template in all formats OExport supports: XLSX/ODS/XLS/CSV!
Feature Overview
See the following files for a fast feature overview. These files have been directly exported with OExport:
- XLSX: oexport-fulldemo.xlsx
- ODS: oexport-fulldemo.ods
- XLS: oexport-fulldemo.xls
You can generate those files with the demo application you find in the FREE package (see download tab).
They have not been edited after the export in any way.
Please note that XLS exporter doesn’t support images and charts and therefore you won’t see them in the exported XLS file.
The full source code that was used to generate them
can be obtained from the documentation.
Feature Matrix
= Supported; | = Partially supported; | = Not supported; | = Not available |
Feature | Export | Import | ||||||
---|---|---|---|---|---|---|---|---|
XLSX | ODS | XLS | CSV | XLSX | ODS | XLS | CSV | |
Cell types: string, number, percent, currency, scientific, fraction, time, date, datetime | ||||||||
Rich text in cells | ||||||||
Custom number format | ||||||||
Hyperlinks for string cells | ||||||||
Formulas for all cell types | ||||||||
Cell, row, column and worksheet formatting: horizontal + vertical alignment, wrap text, font, background color, borders (color, size and style), text orientation and rotation | ||||||||
Column widths + row heights | ||||||||
Column + row grouping | ||||||||
Conditional formatting | ||||||||
Data validation | ||||||||
Column + row span (merged cells) | ||||||||
Print settings: page header & footer, page orientation, page margins, page order, page breaks, print scale, table centering, repeat columns & rows, grid lines, table headers | ||||||||
Fixed cells (window fixed scrolling) | ||||||||
Named cells | ||||||||
Cell & worksheet protection: with and without password | ||||||||
Autofilter | ||||||||
Comments | ||||||||
Images: JPEG, PNG, GIF, TIFF + fill, border, shadow |
||||||||
Charts: bars, columns, lines, areas, bubble, scatter; different line, fill, marker and axes styles, sizes, colors; titles … |
Row and column limits
OExport is able to read and write the maximum permitted row and column counts of every supported format.
The limits are the following:
Row count | Column count | |
---|---|---|
XLSX | 1’048’576 | 16’384 |
ODS | 1’048’576 | 1’024 |
XLS | 65’536 | 256 |
CSV | 2’147’483’647 | 2’147’483’647 |
Performance
The performance of OExport may vary on used compiler. The best figures are reached
with Delphi 2009 and newer.
The following times were measured on an old laptop from 2007
(Intel Core 2 Duo, 1.8 GHz, 4.0 GB RAM, Win 7 32bit).
Files consisted of 1 million string cells
with shared strings table (SST) either off or on.
1 million string cells | Export | Import | |||||||
---|---|---|---|---|---|---|---|---|---|
XLSX | ODS | XLS | CSV | XLSX | ODS | XLS | CSV | ||
D2009+ | SST off | 35 s | 32 s | 22 s | 15 s | 70 s | 84 s | 8 s | 15 s |
SST on | 44 s | 32 s | 27 s | 15 s | 105 s | 84 s | 9 s | 15 s | |
D5-D2007 | SST off | 92 s | 75 s | 44 s | 42 s | 178 s | 170 s | 17 s | 32 s |
SST on | 100 s | 75 s | 50 s | 42 s | 260 s | 170 s | 20 s | 32 s | |
Lazarus | SST off | 50 s | 48 s | 37 s | 29 s | 94 s | 103 s | 8 s | 26 s |
SST on | 55 s | 48 s | 40 s | 29 s | 124 s | 103 s | 8 s | 26 s |
OFiller
- OFiller: fill DOCX (Word 2007-2013), ODT (OpenOffice Writer), XLSX (Excel 2007-2013), XLS (Excel 97-XP), ODS (OpenOffice Calc) templates
License
OEXPORT LICENSE INFORMATION =========================== Copyright (C) 2011-2017 Ondrej Pokorny http://www.kluug.net This license is applicable to all files distributed in this archive if not stated differently. The commercial part of the license text (FULL version) applies to orders after March 14th, 2017. *** BEGIN LICENSE BLOCK ***** OExport 2.x LICENSE ------------------- 1) You may use OExport if: a. You use the FREE version. OR b. You have a commercial license for the FULL version. 2) Limitations of the FREE version a. There are no limitations per workplace. You can use OExport FREE both for commercial and non-commercial purposes. b. Only the first worksheet will be exported or imported and a maximum of 40 rows and 10 columns. c. You may not modify, decompile, disassemble, reverse engineer or translate OExport FREE. 3) Limitations of the FULL version a. Only developers who work for the license holder company may use OExport. That includes freelancers but only in projects assigned to them by the license holder company. b. The number of active developers who use OExport may not exceed the total number of licensed developers that the license(s) of the holder company provide(s) for. 4) Transfer of FULL version licenses a. Licenses may be transferred to new developers who work for the license holder company if all other requirements are met (especially point 3b). b. The license may be transferred only as a whole to a different company. Example: you buy a 3-developer license. You may transfer it completely to a different company. You may not split the license and transfer 1-developer license to a different company and keep 2-developer license. 4) License validity a. The license is perpetual. b. You get 2 years of free updates and new releases, starting from the day of purchase. After this period you can order extra 2 years of updates (starting from the day of update expiration) for 60% of the license price at the moment of update expiration. 5) You may NOT use OExport for: a. Writing libraries and applications that are in direct or indirect competition with OExport or tools whose main purpose is providing OExport functionality. An example would be to build a public XLSX- ODS- or XLS-Export library or a conversion tool etc. OExport functionality has to be an extension to an existing application (e.g. export in an accounting software). If you need a special license, please contact the author. 6) Redistribution of the source code and the DCU's a. OExport source code and DCU's may not be redistributed on any kind of media or offered for download on any internet server without the author's explicit permission. 7) Redistribution in binary form a. If you do not have a FULL commercial license, you have to attribute OExport in e.g. the About Dialog of your software. The attribution must contain the name ("OExport") and my homepage ("http://www.kluug.net"). b. If you do have a license for the FULL version, no attribution is required. 8) Additional software licensed with OExport a. If you purchase OExport, you also get a special OXml commercial license. This license allows you to use OXml only as part of OExport (because OExport uses OXml for handling XLSX and ODS files). You are not allowed to use OXml separately - in this case you have to obtain OXml commercial license as well. This paragraph applies to OXml which is located in OXml directory. 9) Limited Warranty a. THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. IN NO EVENT SHALL KLUUG.NET OR ANY OTHER PARTY WHO MAY HAVE DISTRIBUTED THE SOFTWARE AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. ***** END LICENSE BLOCK *****
Commercial license
All commercial licenses include full source code of OExport that can be used
on all officially supported platforms.
You may order a roality-free commercial license for a specified number of developers using OExport in your company.
A commercial license allows you to use OExport in any kind of application commercial or freeware that does not break the Section 4. of the license («DLL library»).
You also get 2 years free updates and new releases with priority email support.
With these resources you can add XLSX/ODS support to your applications quickly and with ease.
Go to OExport online help.
Pricing & Order
Online orders are managed by PayPal. I also accept bank transfers to my bank account.
In this case, please send me an email with your billing address and I send you my account number.
You receive an invoice per email after your payment.
All prices are without VAT.
I offer you a 30-days money-back guarantee if you can’t use OExport for
what is advertised on this page (because of bugs, compatibility problems etc.).
Commercial licenses & help access
OExport for 1 developer + 2 years of updates |
EUR 210,- (~ USD 210,-) | |
---|---|---|
OExport for max. 3 developers within one company + 2 years of updates |
EUR 420,- (~ USD 420,-) | |
OExport for max. 5 developers within one company + 2 years of updates |
EUR 630,- (~ USD 630,-) | |
OExport for unlimited developers within one company + 2 years of updates |
EUR 840,- (~ USD 840,-) |
Change log
OEXPORT RELEASE INFORMATION =========================== Version 2.37 (2023-01-01) Bug fixes - Recalculation engine: fix equal and not-equal operator for strings and booleans - make compatible with latest OXml - XLS: fix error when last string was interrupted by a record break - fix default column properties for XLSX Version 2.36 (2022-03-25) Bug fixes - ExcelCellWidthToPx to interface - Remove OWideSupp_Vcl.pas - Fix loading XLSX without theme file Version 2.35 (2021-09-30) New features - Delphi 11 support Version 2.34 (2021-06-09) Bug fixes - fix TExportRange.ImportAsXLSX for column and row ranges - TExportCell.DoCalculateColWidth: optimization for empty text - Recalculate formulas: fix SUBTOTAL - force saving XLS RPN formulas even if they haven't been created internally - new property RecalculateFormulasOnExport - RecalculateFormulas - allow non-numeric cells for range and function recalculation (e.g. the concatenate function works on string RecalculateFormulas - fix setting of result value for various cell types - OOLEStorage: EOOleStorageException in case of an empty file - (breaking change) change RecalculateFormulas parameters to set and recalculate formulas before exporting just once - Fix TOExportTemplate.StartProcessingRows Version 2.33 (2021-02-02) New features - OExportTemplate: allow to work with specific sheets only - Functions: add SUBTOTAL Bug fixes - Read XLSX: fix palette - OFiller: merge also text nodes without rPr node if they have texts - OFiller: replace loses international characters - TExportCell.Transform: try to convert values - OExport: fix Excel 1900 is leap year - GetTextExtent - try various DPI settings because of Excel comment boxes - OExport: NormSheetName as class function - Sheet: fix forbidden characters in sheet name Version 2.32 (2020-07-24) New features - Delphi 10.4 packages Bug fixes - OExport fix invalid '>' - TExportCellComment.DoCalculateSize: more width Version 2.31 (2020-05-12) Bug fixes - various bug fixes Version 2.30 (2019-07-27) New features - Delphi 10.3.2 support (with MacOS 64bit support) - OFiller: TOFillerXLSX.ReplaceCellAtAddress Bug fixes - Fix multithreading support - OExportRTF: fix last char & line feed offsets in StringCellToRichEdit - XLSReadString: always read flags (bug was when empty formula string token was read) - TOExport.RecalculateFormulas: use only GuessCellType for guessing and not for final cell type because it doesn't have to be correct - Fix formulas with named ranges in data validation Version 2.29 (2018-12-31) New features - Delphi 10.3 support - OFiller: add TReplaceImageSizeRatio.srImageSetSmaller - OFiller: add aAlign, aVAlign to ReplaceImage (supported in XLSX only) Bug fixes - OExport drawings: use position and size in Double precision - fix reading Excel 2016 documents - fix CalculateColWidthsRowHeights for hidden columns&rows - fix importing XLSX named cell col+row ranges Version 2.28 (2018-10-25) New features - Basic HTML Export (first simple version). Bug fixes - Update package names so that they do not collide with unit names - HTML exporter: fix column widths and row heights - OFiller: support header&footer in DOCX - OExport: fix column width on high-dpi systems - OFileUtils: fix GetUniqueFileName - HTML Export improvements - OFiller: TOFillerXLSX.ReplaceHyperlink - OFiller: TOFillerXLSX.DeleteImage - OFiller: fix image size - Fix selection if split is used. - Export cell: fix assign drawings - Formula recalculation engine: support IS* functions (IsBlank, IsErr, IsError, IsLogical, IsNA, IsNonText, IsNumber, IsRef, IsText) - Formula engine: support Count and CountA - OExport: support meta information (XLSX, ODS) - NoGUI: move LCLProc to interface uses - Add TExportWorkSheet.DeleteEmptyRows - RPNFormula: support VLookup - RPNFormula: fix IsSingleOperatorAfterThisOperator - XLSX: fix loading boolean cells without assigned value - Fix RNP Column/Row types - Update dir ignore properties - Rename IntegerList to OIntegerList to avoid name collisions - VCL: Fix ExecuteSaveDialog not returning filename - OZip: add IsValid stream overload - OFiller: better exception for invalid file format - XLS formula import: check valid worksheet index - XLS palette: don't use default and system colors because Excel cannot open cell property dialog if they are used. - Add AutoFilter button width to calculated column width - Handle Excel limit of 1024 page breaks. - TExportCell.AssignTo: add CalculateColWidth - Add EXCEL_REC_CODEPAGE and EXCEL_REC_WINDOWPROTECT - OExport: fix formula call stack - Add TOExporterText.DeleteEmptyCellsFromEnd - XLS export: fix record order. Fix target pane index in EXCEL_REC_PANE - TOExporterText: new WriteBOM property Version 2.27 (2017-04-10) New features - OFiller: support named cells. - initialize OExportDateFormat and OExportTimeFormat directly in OExport - formula recalculation: add support for MID, LEN, IF, FIND functions - add XLS support for SUMIF(), COUNTIF() (no recalculation yet). Bug fixes - fix mouse wheel not working in Excel 2000 - fix too wide columns for calculated cells - XLS: fix writing long strings to SST - PaperType support - OExport_Vcl: fix multithreading - Fix Delphi 7 performance bottleneck when loading XLSX with a lot of different strings. - add ANSI encoding support, CSV: ForceEscapeChar - add support for Text() function. - Fix Exyz (E1, E2 ...) evaluation - CSV exporter: use EscapeChar only if the text must be escaped. - fix reading negative RK value. - TOExport: add enumerators to WorkSheets, Rows, Cells. - fix Id collision when comments and images are used in one sheet. - don't move cells in string constants - TExportHeaders: add Items[] property - TExportCellRange: fix SetBorder=crbAll - fix truncation of date only and time only values. - OFiller: XLSX: remove formula values in ReplaceCellsEnd - they might be invalid. - OFiller: fix XLSX ReplaceCell SharedStrings handling. - OFiller: support replacing float values in XLSX via ReplaceCell. - OFiller: fix removing tabulators. Installation * If you want to update OExport, you have to update OXml as well (OXml is included in the zip package too). If you use packages, you have to recompile them! (Both OXml and OExport packages). Version 2.26 (2016-04-27) New features - support of prefixed XLSX documents (typically from Mac OSX). - added support for comment images. - added OExportXLSXCustom (support of custom files in an XLSX container). - implement secondary y-axis support for XLSX - implement TOExporterText.DecimalSeparator - hyperlinks: cell hyperlinks, tooltip support - OFiller: support duplicating rows - OFiller: intelligent token merge for DOCX - OFiller: add TOMergerDOCX - Delphi 10.1 Berlin support Bugfixes - fix hyperlink bug - fix a speed problem of on-the-fly export and keep memory consumption low if hyperlinks are used - added Polish translation (from Michal Glebowski). - fix relative formula evaluation if reference cell doesn't exist. - fix formula for TExportCellEmpty - fix problem with replacing n to m in formatting strings. - use TOHashedStrings in TExporterXLSX_HyperLinks - fix AV in TExportNamedCells.Remove Installation * If you want to update OExport, you have to update OXml as well (OXml is included in the zip package too). If you use packages, you have to recompile them! (Both OXml and OExport packages). Version 2.25 (2015-12-07) Bugfixes - renamed ZLib* units to OZLib* units to solve issues with duplicate names - fixed conditional formatting and data validation assignment in templates - added TExportCols InsertColWithCells, DeleteColWithCells, AssignColWithCells - Writeable TExportImage.Ext; make RecalculateFormulas public - Added MODE Delphi switches for FPC Installation * If you want to update OExport, you have to update OXml as well (OXml is included in the zip package too). If you use packages, you have to recompile them! (Both OXml and OExport packages). Version 2.24 (2015-09-16) New features + Delphi 10 Seattle support. Bugfixes * prevent AV during import of XLSX comments. * fixed TExportRow.AddCellVariant * added ApplicationVersion and set default values for Application/ApplicationVersion to meet Excel 2007 due to LibreOffice compatibility. * check for circular references in formula recalculation * fixed ROW() and COLUMN() functions Version 2.23 (2015-08-26) New features + New property TExportWindowSettings.View. + New property TOExport.AutoAdjustFormulas - adjust formulas when inserting/deleting rows/cells (the same that Excel does). False by default. + New properties TExportChartAxis.MaxValue and .MinValue. + OFiller procedure ReplaceImage changed to function - it returns number of replaced images. + Added new translations. Now OExport supports the following languages: English, Czech, German, Danish, French, Hungarian, Dutch, Russian + Multiple chart support (TExportChart.SubCharts). + Support for enhanced TExportConditionalFormatting and TExportDataValidation ranges - row, col and custom ranges. + New property TExportWorkSheet.ConditionalFormattingList. + New property TExportWorkSheet.DataValidationList. * You can use the lists above for adding CondForm or DataVal for custom ranges. + Added TOExportTemplate.FindStringCellsByStrPos. With it you can find a cell that contains a substring. Bugfixes * Images in cells with colspan were not exported. * Fixed bug in DOCX ReplaceImage. * XLS relative formula bug fix. * Recalculate formulas when loading XLS and cell type doesn't match formula result. * OFloatToFraction bug fix. * ODS cells with colspan bug fix. * TOOleStorage.ReadDirectoryEntry bug workaround. - Removed TOFileStream from OFileUtils.pas. TOFileStream is declared in OWideSupp.pas in OXml. Installation * If you want to update OExport, you have to update OXml as well (OXml is included in the zip package too). If you use packages, you have to recompile them! (Both OXml and OExport packages). Version 2.22 (2015-04-28) New features + TCellHAlignment - new options cahCenterContinuous, cahDistributed. + XLS formulas support references accross worksheets. + TExportChartData.ShowLabels changed from Boolean to TExportChartDataShowLabels. ! Use [] for false. ! Use [eslValue] for true. + TExportChartAxis has new properties: ExcelNumberFormat, OriginAt, OriginValue + TExportWorkSheet has new properties: Visibility and NewCellStringFormat + TExportWindowSettings has new properties: ShowFormulas and ShowZeros + Added data validation support: TExportCell.DataValidation + Added support of named cells within a sheet: TExportWorkSheet.NamedCells * Improved formula recalculation engine and XLS formula support. * Bug fix: zero date/time was exported as empty cell. * Removed TPAbbrevia dependency. OExport now uses native ZLib on all platforms. As a result, export in Lazarus, Delphi XE and older is faster and uses less memory. * Improved image export: images are not loaded into memory if they are exported from files. * Some other small improvements and bug fixes. (Please see the installation package for a complete change log).
A7rexcel это компонент формирования отчетов в Excel для Delphi 7 — Delphi XE2 (Embarcadero RAD Studio XE2). Компонент полностью бесплатен и свободен для использования где угодно и как угодно, единственная просьба — ссылка на этот сайт при упоминании этого компонента на просторах интернета.
Зачастую отчетные системы предназначены для выдачи результата сразу на печать с предпросмотром, и возможность сохранения в Excel это лишь опция, иногда работающая так, что сохраненный файл выходит не очень похожим на оригинал, и представляет собой нагромождение объединенных ячеек, а иногда еще и с неправильным форматом данных. Для того чтобы избежать этих неприятностей, можно использовать отчетную систему, которая будет выводить информацию напрямую в Excel.
A7rexcel позволяет выводить информацию в Excel используя в качестве шаблона xls-файл, благодаря чему становится просто настроить внешний вид получаемого документа, ориентацию листа, поля, нумерацию, и все остальное что можно настраивать в экселевском документе.
Предлагаемый компонент настолько прост, что в его внутренностях сможет разобраться даже начинающий программист, если потребуется расширение функционала. Так же он прекрасно подходит для тех, кто просто хочет разобраться как работать из Delphi-приложения с Microsoft Excel.
Исходные коды компонента на hithub — github.com/a7in/a7rexcel
Скачать компонент и демо-проект — a7rexcel.zip
Пример простейшего отчета:
Компонент работает со всеми версиями офиса — 2003,2007,2010,2013.