Форум: "Базы";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];
ВнизВыгрузить в Эксель Найти похожие ветки
← →
Alex-kosmonavt (2003-11-10 12:39) [0]Как выгрузить результат оператора SELECT (набор данных) в эксель??
← →
Kadr (2003-11-10 13:02) [1]http://www.delphikingdom.ru/helloworld/excelsm.htm
← →
Alex-kosmonavt (2003-11-10 13:12) [2]Ага спасибо
попробовал, но я использую компонент TWorkSheet
и в этом месте, где я пишу вместо
Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];
вот что Cells1:= ExSheet.Cells[BeginRow, BeginCol];
в итоге делфик ругается говорит
Class does not have a default property
???
← →
Kadr (2003-11-10 13:18) [3]а ты попробуй
не использовать <iкомпонент TWorkSheet\>
← →
Kadr (2003-11-10 13:20) [4]а ты попробуй
не использовать компонент TWorkSheet
← →
Reindeer Moss Eater (2003-11-10 13:32) [5]А не проще ли прямо в книге выполнить нужный запрос к MSSQL?
← →
Alex-kosmonavt (2003-11-10 14:51) [6]Супер, экспорт заработал
Спасибо.
Подскажите только как решить траблу: определить размер экспортируемого Range (то есть размер результата запроса)
я определяю количество столбцов как: ClumnCount:=Query.FieldCount
а строк как RowCount:=Query.RecordCount
Это правильно??
← →
Карелин Артем (2003-11-10 14:54) [7]
var Excel,WorkBook,Sheet:variant;
begin
try
Excel := CreateOleObject("Excel.Application");
if Excel.WorkBooks.count=0 then WorkBook := Excel.WorkBooks.Add else WorkBook := Excel.WorkBooks[1];
if WorkBook.WorkSheets.count=0 then Sheet := WorkBook.WorkSheets.Add else Sheet := WorkBook.WorkSheets[1];
except
ShowMessage("Невозможно запустить MS Excel");
exit;
end;
MainData.Grid2Excel(Sheet,3,1,DBGridEh1);
Sheet.Cells.Columns.AutoFit;
Sheet.UsedRange.Borders.LineStyle :=1;
Sheet.UsedRange.BorderAround(1,3);
Sheet.Cells[2,1].Value:=" Сводный отчет по сборам c "+DateToStr(DateEdit1.Date)+" по "+DateToStr(DateEdit2.Date);
Excel.Visible:=true;
Excel.ScreenUpdating:=true;
Sheet:=Unassigned;
WorkBook:=Unassigned;
Excel:=Unassigned;
end;
--------------------------------------------------------------------------------
function TMainData.Grid2Excel(const ExcelDoc: variant; const row,
col: integer;const Grid: TDBGridEh):integer;
var x,y:integer;
bm:TBookmark;
BeginCol, BeginRow, i, j : integer;
RowCount, ColCount : integer;
Cell1, Cell2,ArrayData:Variant;
begin
Screen.Cursor:=crHourGlass;
Application.ProcessMessages;
y:=row;
Grid.DataSource.DataSet.DisableControls;
bm:=Grid.DataSource.DataSet.GetBookmark;
Grid.DataSource.DataSet.First;
for x:=0 to Grid.Columns.Count-1 do
begin
ExcelDoc.Cells[y,x+col].Value:=Grid.Columns[x].Title.Caption;
ExcelDoc.Cells[y,x+col].Font.Bold:=true;
end;
// Grid.DataSource.DataSet.Last;
Grid.DataSource.DataSet.First;
// RowCount:=Grid.DataSource.DataSet.RecordCount;
// if RowCount>16000 then RowCount:=16000;
ColCount:=Grid.Columns.Count;
ArrayData := VarArrayCreate([1, 65001, 1, ColCount], varVariant);
i:=1;
while not(Grid.DataSource.DataSet.Eof or (Grid.DataSource.DataSet.RecNo>65000)) do
begin
for J := 1 to ColCount do
begin
// if not(Grid.Columns[j-1].Field.IsNull) then
ArrayData[I, J] := Grid.Columns[j-1].Field.Text;
end;
inc(i);
RowCount:=i;
Grid.DataSource.DataSet.Next;
end;
Cell1 := ExcelDoc.Cells[Row+1, Col];
// Правая нижняя ячейка области, в которую будем выводить данные
Cell2 := ExcelDoc.Cells[Row + RowCount-1, Col +ColCount - 1];
ExcelDoc.Range[Cell1, Cell2].NumberFormat:="0";
ExcelDoc.Range[Cell1, Cell2].Value := ArrayData;
Grid.DataSource.DataSet.GotoBookmark(bm);
Grid.DataSource.DataSet.FreeBookmark(bm);
Grid.DataSource.DataSet.EnableControls;
// ExcelDoc.UsedRange.NumberFormat:="@";
Screen.Cursor:=crDefault;
Result:=RowCount-1;
end;
← →
Карелин Артем (2003-11-10 14:55) [8]Кстати авторство исключительно мое.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c