Exports content of a data grid control to a file in Microsoft Excel® binary format (XLS).
Declaration
procedure ExportGridToExcel(const AFileName: string; AGrid: TcxGrid; AExpand: Boolean = True; ASaveAll: Boolean = True; AUseNativeFormat: Boolean = True; const AFileExt: string = 'xls'; AHandler: TObject = nil);
Parameters
Name | Type | Description |
---|---|---|
AFileName | string |
The full path to the resulting XLS file. You can omit the file name extension because it is automatically updated from the |
AGrid | TcxGrid |
The source data grid control. |
AExpand | Boolean |
Optional. If |
ASaveAll | Boolean |
Optional. If |
AUseNativeFormat | Boolean |
Optional. If |
AFileExt | string |
Optional. Specifies the file name extension for the resulting XLS file. This parameter value always replaces the file name extension passed as a part of the |
AHandler | TObject |
Optional. Specifies a handler object that should implement the IcxExportBeforeSave and/or IcxExportProgress interfaces to allow you to perform specific actions before an export operation and track its progress. Refer to the following topic for detailed information on how to create and use handler objects: How to: Track Data Export Progress. |
If you pass True
as the AUseNativeFormat
parameter, the ExportGridToExcel
procedure attempts to convert display text of a grid item’s cells to their underlying data format (Currency, Date, Time, Numeric, etc.) If you assign an in-place editor to a cell, the export procedure selects the data format according to the following table:
In-place Editor | Data Format |
---|---|
TcxCurrencyEdit | Currency |
TcxMaskEdit or TcxCalcEdit | Currency, if the assigned editor is bound to a dataset field whose values are formatted as currency values (TAggregateField.Currency, TBCDField.Currency, TFloatField.Currency, or TFMTBCDField.Currency). Otherwise, the data format is Number. |
TcxDateEdit | Date |
TcxTimeEdit | Time |
TcxSpinEdit | Number |
If any other editor is assigned to a cell, the ExportGridToExcel
procedure exports its display text regardless of the AUseNativeFormat
parameter value. If it is impossible to convert display text to the target data type for any reason, the display text is exported as a string.
Note
The listed data formats are used for value conversion only. They do not correspond to cell number formats found in Microsoft Excel®. Populated cells have the General format.
Summary values use the same data type as cell values against which these summaries are calculated if the following conditions are met for the corresponding summary items:
- An empty string is assigned to a summary item’s Format property.
- An OnGetText event handler is not assigned to a summary item.
Example
The following code example exports grid content to a file in XLS format with expanded detail pages:
- Delphi
- C++
ExportGridToExcel('Employees.xls', cxGrid1, True);
See Also
Содержание
- ExportGridToXLSX(string,TcxGrid,Boolean,Boolean,Boolean,string,TObject) Method
- Declaration
- Parameters
- Remarks
- Example
- ExportGridToExcel(string,TcxGrid,Boolean,Boolean,Boolean,string,TObject) Method
- Declaration
- Parameters
- Remarks
- Example
- » Использование DevExpress (часть 3)
- Cxgrid export to excel
ExportGridToXLSX(string,TcxGrid,Boolean,Boolean,Boolean,string,TObject) Method
Exports the currently active root level’s content to a file in Office Open XML spreadsheet format (XLSX).
Declaration
Parameters
The full path to the resulting text file. You can omit the file name extension because it is automatically updated from the AFileExt parameter value.
The source data grid control.
Optional. If True , the procedure exports all rows, including the rows hidden within collapsed group rows and master rows. If False , the procedure exports only visible rows.
Optional. If True , the procedure exports all or visible rows, depending on the AExpand parameter value. If False , the procedure exports only selected rows. In grid mode, the ASaveAll parameter value is ignored.
Optional. If True , the procedure attempts to convert display text of a grid item’s cells to their underlying data format (that is, Currency, Date, Time, Numeric, etc.) The table below lists supported in-place editors and the corresponding data formats. If False , the procedure exports display text as string values.
Optional. Specifies the file name extension for the resulting Office Open XML file. This parameter value always replaces the file name extension passed as a part of the AFileName parameter value.
Optional. Specifies a handler object that should implement the IcxExportBeforeSave and/or IcxExportProgress interfaces to allow you to perform specific actions before an export operation and track its progress. Refer to the following topic for detailed information on how to create and use handler objects: How to: Track Data Export Progress.
If you pass True as the AUseNativeFormat parameter, the ExportGridToXLSX procedure attempts to convert display text of a grid item’s cells to their underlying data format (Currency, Date, Time, Numeric, etc.) If you assign an in-place editor to a cell, the export procedure selects the data format according to the following table:
Name | Type | Description |
---|---|---|
AFileName | string |
In-place Editor | Data Format |
---|---|
TcxCurrencyEdit | Currency |
TcxMaskEdit or TcxCalcEdit | Currency, if the assigned editor is bound to a dataset field whose values are formatted as currency values (TAggregateField.Currency, TBCDField.Currency, TFloatField.Currency, or TFMTBCDField.Currency). Otherwise, the data format is Number. |
TcxDateEdit | Date |
TcxTimeEdit | Time |
TcxSpinEdit | Number |
If any other editor is assigned to a cell, the ExportGridToXLSX procedure exports its display text regardless of the AUseNativeFormat parameter value. If it is impossible to convert display text to the target data type for any reason, the display text is exported as a string.
The listed data formats are used for value conversion only. They do not correspond to cell number formats found in Microsoft Excel®. Populated cells have the General format.
Summary values use the same data type as cell values against which these summaries are calculated if the following conditions are met for the corresponding summary items:
- An empty string is assigned to a summary item’s Format property.
- An OnGetText event handler is not assigned to a summary item.
Example
The following code example exports grid content to a file in XLSX format with expanded detail pages:
Источник
ExportGridToExcel(string,TcxGrid,Boolean,Boolean,Boolean,string,TObject) Method
Exports content of a data grid control to a file in Microsoft Excel® binary format (XLS).
Declaration
Parameters
The full path to the resulting XLS file. You can omit the file name extension because it is automatically updated from the AFileExt parameter value.
The source data grid control.
Optional. If True , the procedure exports all rows, including the rows hidden within collapsed group rows and master rows. If False , the procedure exports only visible rows.
Optional. If True , the procedure exports all or visible rows, depending on the AExpand parameter value. If False , the procedure exports only selected rows. In grid mode, the ASaveAll parameter value is ignored.
Optional. If True , the procedure attempts to convert display text of a grid item’s cells to their underlying data format (that is, Currency, Date, Time, Numeric, etc.) The table below lists supported in-place editors and the corresponding data formats. If False , the procedure exports display text as string values.
Optional. Specifies the file name extension for the resulting XLS file. This parameter value always replaces the file name extension passed as a part of the AFileName parameter value.
Optional. Specifies a handler object that should implement the IcxExportBeforeSave and/or IcxExportProgress interfaces to allow you to perform specific actions before an export operation and track its progress. Refer to the following topic for detailed information on how to create and use handler objects: How to: Track Data Export Progress.
If you pass True as the AUseNativeFormat parameter, the ExportGridToExcel procedure attempts to convert display text of a grid item’s cells to their underlying data format (Currency, Date, Time, Numeric, etc.) If you assign an in-place editor to a cell, the export procedure selects the data format according to the following table:
Name | Type | Description |
---|---|---|
AFileName | string |
In-place Editor | Data Format |
---|---|
TcxCurrencyEdit | Currency |
TcxMaskEdit or TcxCalcEdit | Currency, if the assigned editor is bound to a dataset field whose values are formatted as currency values (TAggregateField.Currency, TBCDField.Currency, TFloatField.Currency, or TFMTBCDField.Currency). Otherwise, the data format is Number. |
TcxDateEdit | Date |
TcxTimeEdit | Time |
TcxSpinEdit | Number |
If any other editor is assigned to a cell, the ExportGridToExcel procedure exports its display text regardless of the AUseNativeFormat parameter value. If it is impossible to convert display text to the target data type for any reason, the display text is exported as a string.
The listed data formats are used for value conversion only. They do not correspond to cell number formats found in Microsoft Excel®. Populated cells have the General format.
Summary values use the same data type as cell values against which these summaries are calculated if the following conditions are met for the corresponding summary items:
- An empty string is assigned to a summary item’s Format property.
- An OnGetText event handler is not assigned to a summary item.
Example
The following code example exports grid content to a file in XLS format with expanded detail pages:
Источник
» Использование DevExpress (часть 3)
Подскажите пожалуйста а лучше поделитесь кодом.
как экспортировать в Excel второй, третий уровень из cxGrid
Понятно что ExportGridToExcel не экспортирует второй, третий уровень и надо написать что то самому но я только недавно столкнулся с cxGrid и всех тонкостей ещё не знаю.
использовать параметр AExpand (в ExportGridToExcel):
The AExpand parameter indicates whether to export all records displayed within the exported level including records hidden within collapsed groups. If this parameter value is True, the grid expands all group and master records before exporting. If this parameter value is False, the records expanded state remains unchanged and only visible records content is written to the file.
подскажите как программно свернуть DockPanel, которая развернута. hide вообще ее скрывает.
использовать параметр AExpand (в ExportGridToExcel):
procedure ExportGridToExcel(const AFileName: string; AGrid: TcxGrid;
AExpand: Boolean; ASaveAll: Boolean; AUseNativeFormat: Boolean; const AFileExt: string);
ExportGridToExcel(‘C:TestExport.xls’, cxGrid, True, True, True,’xls’);
поставил AExpand в True. И все равно мне переносится один верхний уровень. Под уровень не берется может ещё где то что то надо указать.
ExportGridToExcel(‘C:TestExport.xls’, cxGrid, True, True, True,’xls’);
поставил AExpand в True. И все равно мне переносится один верхний уровень
Предложенное вам решение действительно работает, но только при экспорте View с группами.
The AExpand parameter indicates whether to export all records displayed within the exported level.
Т.е. содержимое только одного (Focused) View/Leve может быть экспортировано.
В случае многоуровневых cxGrid нет способа экспортировать все уровни в один excel файл.
Подробнее смотрите в Knowledge Base:
Why are detail views not exported when ExportGrid4ToExcel is called?
И еще одна статья по теме
A1113 — Detail View Export
Это если у тебя сгруппирована таблица.
А так, да, мне бы тоже было бы интересно, как.
Вопрос в том, что эксель и cxGrid — разные вещи абсолютно. А по сему, думаю, что нет простого способа экспортировать многоуровневый cxGrid в эксель. Подумай, как это всё разместить в экселе? Вот как бы ты разместил?
Ну хорошо а как самому написать есть ли примеры посмотреть как взять первый уровень потом второй.
Затем опять первый второй и до конца.
Чета я ваще запутался и не знаю куда мне дальше копать.
У меня трудности следующего характера как взять данный 1го уровня и как взять данные его же подуровня.
и как понять где родительский а где подчиненый.
Извиняйте за такие вопросы но надо же с чего то учится.
Спасиб ты настоящий добрый человек. Поддержал.
появился в новых версиях функционал — при установкеотмене родителя все дети тоже становятся checkedunchecked?
The parent node keeps track of child states, and automatically changes its state to unchecked (if the two-state mode is enabled) or grayed (if the three-state mode is enabled), if one of its checked children has been unchecked or grayed.
OwnerZ
про рекурсию слышали? если нет срочно читать. и тогда такие вопросы «как удалить ветку из трилиста»
Вы немного ошиблись. OwnerZ спрашивал про экспорт из cxGrid.
OwnerZ
Ну хорошо а как самому написать есть ли примеры посмотреть как взять первый уровень потом второй.
Затем опять первый второй и до конца.
При таком подходе у вас будет очень много различных *.xls файлов. Это вас устраивает?
А разве в приведенных мною ссылках не было примера? В *A1113 — Detail View Export* есть отличный пример.
При удалении узла, который содержит подгруппы не удаляются эти подгруппы, а удаляется только родитель (хотя стоит каскадное удаление).
Если транзакцию удаления подтвердить и заново считать данные, то все ок.
Откуда взяться каскадному удалению если вы еще не подтвердили транзакцию. Сервер же о ваших действиях еще ничего не знает.
Ваш пример отличен пробую его реализовать у себя ноу меня ругается на
Цитата:
ExportDetailToExcelFromGrid(grdPriceSummary,
TClientDataSet(TcxGridDBTableView(dbtvPriceDetails).DataController.DataSet),
GetFormatFileNameWithoutExtension(‘PDV3’),
ExportedTo);
[Error] Undeclared identifier: ‘TClientDataSet’
Подскажите что подключать.
Добавлено:
ага нашел
DBClient
Нет не подходит ваш пример к сожалению.
Прошу прощения действительно все Экспортирует первый второй уровень.
Но теперь другая проблема почему то он мне экспортирует все данные в китайском языке(улыбнуло как увидел).
Вопрос с чего вообще он это делает и не знаете ли вы случайно как это исправить.
Ваш пример отличен..
..все данные в китайском языке.
Вопрос с чего вообще он это делает и не знаете ли вы случайно как это исправить.
Значит выглядит это так
ExportDetailGridToFile(‘C:Test’, 1, cxGrid,
cxGridDBTableView, True, True, True, », », », ‘xls’); — Значит если ставить параметр AExportType равным 1 то экспортирует только 1й уровень на русском языке все ок стили и все прочее есть.
все данные в китайском языке
ExportDetailGridToFile(‘C:Test’, 1, cxGrid,
cxGridDBTableView, True, True, True, », », », ‘xls’); — Значит если ставить параметр AExportType равным 1 то экспортирует только 1й уровень на русском языке все ок стили и все прочее есть.
AExportType равным 2 то экспортирует все уровни но на китайском стили и все прочее есть.
Не думаю что это внутренние настройки. Хотя щас пойду попробую на висте экспортнуть
Добавлено:
Очень улыбнуло на другом компьютере экпортнуло на арабском языке причем я так понимаю где то текст переводится потому что не квадратики были а именно арабские буквы.
Добавлено:
я вот думаю
он же в процедуре создает
AGridExport := GetExportClassByDetailGridView(AGridView).Create(AFileName, AExportType, AGridView, AGrid, nil);
Думал как при потери фокуса формой , убрать ее dxDockPanel-s
Набросал процедуру и вижу все компоненты кроме dxFloatDockSite и dxDockPanel
Код: Procedure HideFloat(a_Form:TCustomForm);
var i:integer;
begin
for i:=0 to a_Form.ControlCount-1 do
begin
Form1.ListBox1.Items.Add(a_Form.Controls[i].Name);
end;
end;
Произвожу изменения в базе, а потом обновляю датасет. Необходимо, что бы плюсики (группировка по 3м полям) открылись до самого нижнего уровня. Почему-то получается только до предпоследнего
Источник
Cxgrid export to excel
Привет всем, помогите с такой проблемой (для меня). После экспорта в Excel, в summary суммы округляются до 2 после запятой и ставится валюта из системы, хотя в самом гриде есть суммы у которых после зыпятой 3 цифры. Как решить проблему?
← →
DimaBr © ( 2012-12-26 15:00 ) [1]
Внимание! Здесь обсуждаются вопросы, связанные с разработкой компонентов, редакторов свойств, редакторов компонентов и экспертов IDE.
Вопросы по поиску и использованию готовых компонентов, редакторов или экспертов являются нарушением тематики и могут быть удалены.
← →
O’ShinW © ( 2012-12-26 15:30 ) [2]
Задать правильный формат области вывода
← →
Oleguslu ( 2013-02-05 16:23 ) [3]
> O»ShinW © (26.12.12 15:30) [2]
> Задать правильный формат области вывода
>
>
Подробнее можно?
← →
O’ShinW © ( 2013-02-05 16:39 ) [4]
код вывода показывайте
ладно, а то опять
(25.12.12 18:23)
(05.02.13 16:23) [3]
на месяц затянется 🙂
подробнее так, примерно
procedure FormatSheet(Sheet: Variant; BR, BC, ER, EC: Integer; Formats, FormatsLocal: string);
var
Range, C1, C2: Variant;
begin
C1 := Sheet.Cells[BR, BC];
C2 := Sheet.Cells[ER, EC];
Range := Sheet.Range[C1, C2];
if Formats <> «» then
Range.NumberFormat := Formats;
if FormatsLocal <> «» then
Range.NumberFormatLocal := FormatsLocal;
end;
все возможные стринги-форматы надо смотреть из макросов
В ексёле: записать макрос, форматируешь руками ячейки как нужно, останавливаешь запись.
Смотришь, что там поназаписалось
← →
turbouser © ( 2013-02-06 09:16 ) [6]
> Oleguslu (25.12.12 18:23)
надо проверить properties у соответствующих колонок грида. возможно, там надо явно указать CurrencyEdit или CalcEdit
← →
O’ShinW © ( 2013-02-06 09:59 ) [7]
Требуется видимость ярлыка / установка соответствующей программы
Данная программа соединяется под одним и тем же, жестким, логином, доп.прав не требуется.
Заявка должна быть перенаправлена в отдел администрирования.
Д
← →
O’ShinW © ( 2013-02-06 10:03 ) [8]
зы
Ну, если грид тот так умен — то наверное
Но надежнее явно назначить формат, и экспортировать сам дата сет
Источник
procedure T supplier management .dxbarlargebutton3clCK (Sender: Tobject); var SaveDialog: TSaveDialog; path: string; // path information Excelapp: variant; // Variation variables begin SaveDialog := TSaveDialog.Create(nil); path := ''; try with SaveDialog do begin FileName := 'Supplier information' + FormatDateTime('YYYYMMDD', Now ()); // default file name Filter := '*.xls|*.xls|*.xlsx|*.xlsx|'; if Execute then begin case SaveDialog.FilterIndex of 1: ExportGridToExcel(SaveDialog.FileName, Supplier substrate 1.cxgrid4, true, true, true, 'xls'); 2: ExportGridToXLSX(SaveDialog.FileName, Supplier substrate 1.cxgrid4, true, true, true, 'xlsx'); //2007 end; end; end; finally path := SaveDialog.FileName; SaveDialog.Free; end; if path <> '' then //open a file begin ExcelAPP := CreateOleObject('Excel.Application'); // Create an excel object ExcelAPP.Visible := false; Excelapp.Workbooks.open (PATH); // Use Excel's method to open the file ExcelAPP.WorkSheets[1] .Activate; // The file operation, here is no different from the VBA operation anymore ExcelAPP.Visible := True; // Show out end; end;
Используйте метод, поставляемый с CxGrid
Достоинства: простые параметры
uses cxExportGrid4Link;
procedure TFrm_func.CxGridToExcel(AcxGrid: TcxGrid);
var
SaveDialog: TSaveDialog;
begin
SaveDialog := TSaveDialog.Create(nil);
with SaveDialog do
begin
Filter := '*.xls|*.xls';
if Execute then
ExportGrid4ToExcel(SaveDialog.FileName, AcxGrid, true, true, true, 'xls');
end;
SaveDialog.Free;
end;
Интеллектуальная рекомендация
Помимо восстановления Oracle длинного поля
Система обслуживания клиентов из-за неправильной работы удалила данные и сразу же rman восстановила данные в тестовой среде, а затем постепенно восстановила данные в производственной среде в соответст…
python — распознавать текст в картинках
Эта статья в основном относится кОбработка изображений Python для идентификации текста в изображенияхЭта статья, есть некоторые отклонения в процессе реализации, настоящим записью. Поскольку я не уста…
722.Remove Comments
Given a C++ program, remove comments from it. The program source is an array where source[i] is the i-th line of the source code. This represents the result of splitting the original source code strin…
Вам также может понравиться
Создайте ресурсы изображения из слоя (группа)
В файле PSD, если вы измените имя группы или группы слоя, вы можете автоматически генерировать ресурсы изображения в форматах JPEG, PNG или GIF и указать качество и размер. Включить метод Меню: Ресурс…
Искать имя файла файла под Linux
1. Поиск команды файла. Команда 1, когда используется для поиска абсолютного пути исполняемого файла. Команда 2-х годов, найдите файл, связанный с именем файла, формат, где [-BMS] [имя файла]. Имя]. П…
Принцип динамического прокси-JDK Proxy
В прошлый раз, когда мы объясняли реализацию динамического прокси cglib, сегодня мы рассмотрим принцип реализации прокси JDK. Отображение текущей метки времени до и после выполнения метода класса Subj…
Мин Чэнь: сегодняшняя информация
25 марта: ночная важная новость 1. Режим продаж Smirect Playpad Pointpad Proop — это шаблон лотереи лотереи. BNB увеличился на 13% за последние 24 часа. 2. Бывший министр финансов США Джейкоб Л заявил…
#excel #delphi #devexpress #vcl #tcxgrid
#excel #delphi #девэкспресс #vcl #tcxgrid
Вопрос:
У меня есть задача экспортировать cxGrid с изображениями из разных форм приложения Delphi. Теперь для экспорта изображения я использую буфер обмена следующим образом Clipboard.Assign(Picture)
, затем я выбираю столбец и использую метод Excel.Selection.PasteSpecial
для вставки изображения из буфера обмена. Но, похоже, этот способ не такой быстрый, как мне нужно. И, может быть, вы знаете другие способы экспорта изображения из приложения Delphi в Excel?
Комментарии:
1. Помимо буфера обмена, я вижу только одну другую возможность: сохранить изображение на диске и заставить Excel загрузить файл оттуда. Вероятно, это будет медленнее, потому что буфер обмена — это процесс в памяти, в то время как использование диска включает … диск, который всегда работает медленнее.