Проблема выгрузки из ExpressQuantumGrid 3.2.2 в EXCEL

  • Автор темы neobi1
  • 2884
  • Обновлено
  • 07, Jul 2015
  • #1
Может кто поборол выгрузку в Unicode в ExpressQuantumGrid 3.2.2 именно в EXCEL. Возникла проблем, никак не могу решить или кто подскажет как можно портировать экспорт из ExpressQuantumGrid 6 или другой какой нибудь версии. Буду благодарен за любую помощь.

neobi1


Рег
06 Jul, 2014

Тем
6

Постов
39

Баллов
99
  • 21, Jul 2015
  • #2
Сам пользуюсь этим, посмотри, может поможет:
unit GridToXls;

interface

uses Classes, cxGrid, cxTL, cxExport, cxTLExportLink;

function SaveGridToXlsFile(AOwner:TComponent; grid:TcxGrid; defaultDirectory:string) : boolean;
function SaveTreeListToXlsFile(AOwner:TComponent; tree_list:TcxCustomTreeList; defaultDirectory:string) : boolean;

implementation

uses Dialogs, SysUtils, Forms, Windows, Controls, cxGridExportLink, {Variables,} AppMessages;

function AskExcelFileName(AOwner:TComponent; defaultDirectory:string; var fileName:string) : boolean;
var openDlg : TOpenDialog;
begin
openDlg:=Nil;
try
try
fileName:='';

openDlg:=TOpenDialog.Create(AOwner);

openDlg.DefaultExt:='xls';
openDlg.Filter:='Microsoft Excel Workbook (*.xls)|*.xls';
openDlg.Options:=[ofOverwritePrompt,ofHideReadOnly,ofPathMustExist,ofNoReadOnlyReturn,ofEnableSizing];

openDlg.InitialDir:=defaultDirectory;

if openDlg.Execute then
fileName:=openDlg.FileName;
except
end;
finally
if openDlg<>Nil then
try
openDlg.Free;
except
end;
end;

result:=fileName <> '';
end;

function SaveGridToXlsFile(AOwner:TComponent; grid:TcxGrid; defaultDirectory:string) : boolean;
var xlsFileName : string;
begin
result:=false;

if AskExcelFileName(AOwner,defaultDirectory,xlsFileName) then
begin
if FileExists(xlsFileName) then
if AppMsg_Warning_YesNo('Файл '+xlsFileName+' существует, перезаписать?') <> mrYes then
exit;
try
ExportGridToExcel(xlsFileName,grid,false,true,true,'xls');
result:=true;
except
on E



xception do
AppMsg_Error('Ошибка записи Excel файла '+xlsFileName);
end;
end;
end;

function SaveTreeListToXlsFile(AOwner:TComponent; tree_list:TcxCustomTreeList; defaultDirectory:string) : boolean;
var xlsFileName : string;
begin
result:=false;

if AskExcelFileName(AOwner,defaultDirectory,xlsFileName) then
begin
if FileExists(xlsFileName) then
if AppMsg_Warning_YesNo('Файл '+xlsFileName+' существует, перезаписать?') <> mrYes then
exit;
try
cxExportTLToExcel(xlsFileName,tree_list,true,true,true,'xls');
result:=true;
except
on E



xception do
AppMsg_Error('Ошибка записи Excel файла '+xlsFileName);
end;
end;
end;

end.
 

Amonrakam


Рег
10 May, 2015

Тем
1

Постов
3

Баллов
13
  • 10, Aug 2015
  • #3
Код стандартный dxDBGrid1.SaveToXLS(aFileName); и если в гриде есть допустим китайские символы то вот они знаками вопроса.
 

neobi1


Рег
06 Jul, 2014

Тем
6

Постов
39

Баллов
99
  • 01, Sep 2015
  • #4
IgorIs, post: 764365:
если нужна поддержка xlsx
SaveToXLSX(cxGrid1)
в ExpressQuantumGrid 3.2.2 нет изначально поддержки XLSX у него есть только XLS без поддержки UNICODE
 

neobi1


Рег
06 Jul, 2014

Тем
6

Постов
39

Баллов
99
  • 10, Aug 2016
  • #5
А грид-то здесь причем? Мне почему-то кажется, что грид данные не хранит.

Он их отображает.

Значит не у грида надо дергать данные, а из хранилища.

У гугла по запросу "быстрый экспорт в Excel" можно найти замечательную бесплатную библиотеку, которая умеет в абсолютно любой формат экселя закинуть любые данные, минуя всякие там OLE и прочее...
 

SeaMan75


Рег
24 May, 2010

Тем
3

Постов
13

Баллов
43
  • 03, Oct 2016
  • #6
работаю с импортом и экспортом в эксель каждый день на протяжении 5ти лет. все компоненты, которые пробовал, в той или иной степени работают с глюками, то формат обрезают, то нули в строке спереди, то еще что. ничего лучше и быстрее чем сделать vararray и засунуть его в range нету
 

Ruslan82


Рег
05 Feb, 2011

Тем
2

Постов
22

Баллов
42
  • 23, Oct 2016
  • #7
Диапазон ячеек: Sheet.Range['A1:A10'].Value:=str; Но можно использовать и для одной ячейки: Sheet.Range['A1'].Value:=str;
 

Kovryga


Рег
10 Aug, 2007

Тем
0

Постов
7

Баллов
7
  • 28, Dec 2016
  • #8
А не проще обновить ExpressQuantumGrid и юзать без костылей стандартный экспорт из грида. Единственное, мне не нравится, что он медленно работает на больших объемах. В таких случаях юзаю небольшую либу XLSReadWriteII5 и тащу датасет в эксельку и экспорт более 100к строк проходит за секунды
 

matthew89


Рег
18 Sep, 2013

Тем
0

Постов
10

Баллов
10
  • 12, Jan 2017
  • #9
В новом экспорте для ExpressQuantumGrid поддерживается помимо юникода: Data grouping - with the capability to collapse/expand groups within a worksheet; Totals and group summaries - with the capability to modify/change formulas; Excel-style format rules; Fixed columns.
 

white_nigger


Рег
02 May, 2010

Тем
0

Постов
2

Баллов
2
  • 17, Apr 2017
  • #11
В последнем DevExpress (вер. DevExpress VCL 15.2.2) тоже не все так хорошо с экспортом. При выгрузке многоуровневого отчета в xlsx (процедура ExportGridToXLSX) ширина столбцов не выравниватеся автоматически по заголовкам в подуровнях.
 

fsasha


Рег
29 Apr, 2014

Тем
1

Постов
24

Баллов
34
  • 17, Apr 2017
  • #12
fsasha, post: 764380:
В последнем DevExpress (вер. DevExpress VCL 15.2.2) тоже не все так хорошо с экспортом. При выгрузке многоуровневого отчета в xlsx (процедура ExportGridToXLSX) ширина столбцов не выравниватеся автоматически по заголовкам в подуровнях.
Очень странно советую скачать другой архив DevExpress и переустановить если не поможет то установить вручную. У меня всё нормально работает и автоматически выравнивается. Свой скинуть не могу так как в моём очень много внесёных изменений.
 

neobi1


Рег
06 Jul, 2014

Тем
6

Постов
39

Баллов
99
  • 03, May 2017
  • #13
Да, переписал через TSpreadSheet.

Работает в принципе нормально.

Хотя раньше пользовался экспортом через OLE, сейчас пришлось здорово извращаться чтобы переписать макрос, который динамически внедрялся в Excel и использовал рекурсию.

От OLE пришлось отказаться поскольку новые версии офиса начинают мудрить с секьюрити и перестает работать то, что работало годами.
 

fsasha


Рег
29 Apr, 2014

Тем
1

Постов
24

Баллов
34
  • 16, May 2017
  • #14
Для начала укажите версию пакета DevExpress. По крайней мере в 15.x XLSX выгружался без проблем
 

master_devel


Рег
26 Sep, 2012

Тем
0

Постов
11

Баллов
11
  • 01, Jun 2017
  • #15
Рекомендую юзать с девками связку, данные в excel попадают через хранимку в самом экселе, а потом сводными таблицами выстраиваешь точно такие же уровки как в cxgrid. Хардкор, но более юзабельно.
 

kefeka


Рег
28 Mar, 2016

Тем
1

Постов
6

Баллов
16
Тем
49554
Комментарии
57426
Опыт
552966

Интересно