18.06.2011, 18:45
|
Прохожий
|
|
Регистрация: 18.06.2011
Сообщения: 1
Репутация: 10
|
|
Экспорт в Excel поля типа Memo
Прошу вашей помощи, при при экспорте всех полей появляется ошибка "Недостаточно памяти для завершения операции", но как только в экспорт не попадает поле "Описание" (тип Memo), то все проходит на ура. Очень нужно помогите кто сможет.
Таблица Access.
вот код Экспорта:
Код:
procedure TExportExl.ExportToExl;
var
XLApp,Sheet,Colum:Variant;
index,i, m, n:Integer;
begin
XLApp:= CreateOleObject('Excel.Application');
XLApp.Visible:=cbResult.Checked;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='Отчет';
Colum:=XLApp.Workbooks[1].WorkSheets['Отчет'].Columns;
for n:=0 to export_column.Count-1 do begin
if export_column.Items.Strings[n]='Название книги' then
Colum.Columns[n+1].ColumnWidth:=50;
if export_column.Items.Strings[n]='Автор' then
Colum.Columns[n+1].ColumnWidth:=25;
if export_column.Items.Strings[n]='Издатель' then
Colum.Columns[n+1].ColumnWidth:=30;
if export_column.Items.Strings[n]='Год' then
Colum.Columns[n+1].ColumnWidth:=10;
if export_column.Items.Strings[n]='Обьем' then
Colum.Columns[n+1].ColumnWidth:=10;
if export_column.Items.Strings[n]='Примечание' then
Colum.Columns[n+1].ColumnWidth:=30;
if export_column.Items.Strings[n]='Должник' then
Colum.Columns[n+1].ColumnWidth:=14;
if export_column.Items.Strings[n]='Описание' then
Colum.Columns[n+1].ColumnWidth:=50;
end;
Colum:=XLApp.Workbooks[1].WorkSheets['Отчет'].Rows;
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[2].HorizontalAlignment:=3;
XLApp.Range['A3'].Select;
XLApp.ActiveWindow.FreezePanes:=True;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=clBlue;
Colum.Rows[1].Font.Size:=12;
Sheet:=XLApp.Workbooks[1].WorkSheets['Отчет'];
Sheet.Cells[1,2]:=main.Caption;
for m:=0 to Export_column.Count-1 do begin
Sheet.Cells[2,m+1]:=Export_column.Items.Strings[m];
end;
index:=3;
main.Table1.First;
ProgressBar.Max:=main.Table1.RecordCount-1;
ProgressBar.Position := 0;
ProgressBar.Step := 1;
for i:=0 to main.Table1.RecordCount-1 do
begin
for n:=0 to export_column.Count-1 do begin
if export_column.Items.Strings[n]='Название книги' then
Sheet.Cells[index,n+1]:=main.Table1.Fields.Fields[1].AsString;
if export_column.Items.Strings[n]='Автор' then begin
Sheet.Cells[index,n+1]:=main.Table1.Fields.Fields[2].AsString;
Sheet.Cells[index,n+1].HorizontalAlignment:=3; end;
if export_column.Items.Strings[n]='Издатель' then begin
Sheet.Cells[index,n+1]:=main.Table1.Fields.Fields[3].AsString;
Sheet.Cells[index,n+1].HorizontalAlignment:=3; end;
if export_column.Items.Strings[n]='Год' then
Sheet.Cells[index,n+1]:=main.Table1.Fields.Fields[4].AsString;
if export_column.Items.Strings[n]='Объем' then
Sheet.Cells[index,n+1]:=main.Table1.Fields.Fields[5].AsString;
if export_column.Items.Strings[n]='Примечание' then
Sheet.Cells[index,n+1]:=main.Table1.Fields.Fields[6].AsString;
if export_column.Items.Strings[n]='Должник' then begin
Sheet.Cells[index,n+1]:=main.Table1.Fields.Fields[7].AsString;
Sheet.Cells[index,n+1].HorizontalAlignment:=3; end;
if export_column.Items.Strings[n]='Описание' then
Sheet.Cells[index,n+1]:=main.Table1.Fields.Fields[8].AsString;
end;
Inc(index);
ExportExl.Update;
Main.Update;
ProgressBar.StepIt;
main.Table1.Next;
end;
XLApp.DisplayAlerts := false;
XLApp.ActiveWorkbook.SaveAs(FileNameEdit1.FileName);
XLApp.Quit;
XLApp:= UnAssigned;
main.Table1.First;
Showmessage('Экспорт завершен');
end;
|