Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизКак сохранить БД через SaveDialog в формате Word и Excel? Найти похожие ветки
← →
ev © (2004-04-09 14:18) [0]Как сохранить БД через SaveDialog в формате Word и Excel?
← →
ev © (2004-04-09 14:18) [0]Как сохранить БД через SaveDialog в формате Word и Excel?
← →
Fay © (2004-04-09 14:20) [1]В общем случае - никак. Уточни вопрос.
← →
Fay © (2004-04-09 14:20) [1]В общем случае - никак. Уточни вопрос.
← →
bushmen © (2004-04-09 14:20) [2]Что значит "Сохранить БД" ? Сохранить выборку данных из БД или структуру?
← →
bushmen © (2004-04-09 14:20) [2]Что значит "Сохранить БД" ? Сохранить выборку данных из БД или структуру?
← →
ev © (2004-04-09 14:24) [3]Сохранить выборку по SQL запросу.
← →
ev © (2004-04-09 14:24) [3]Сохранить выборку по SQL запросу.
← →
Карелин Артем © (2004-04-09 14:26) [4]Ну как. На тему экспорта полно статей написано. Экспортируешь и вызываешь методу SaveAs. А можешь на Torry поискать компонентры для экспорта.
← →
Карелин Артем © (2004-04-09 14:26) [4]Ну как. На тему экспорта полно статей написано. Экспортируешь и вызываешь методу SaveAs. А можешь на Torry поискать компонентры для экспорта.
← →
bushmen © (2004-04-09 14:27) [5]Создаешь OLEObject, который привязан к Excel или Word и, например, в цикле кидаешь туда значения.
← →
bushmen © (2004-04-09 14:27) [5]Создаешь OLEObject, который привязан к Excel или Word и, например, в цикле кидаешь туда значения.
← →
ev © (2004-04-09 14:27) [6]А можно ссылку?
← →
ev © (2004-04-09 14:27) [6]А можно ссылку?
← →
Карелин Артем © (2004-04-09 14:29) [7]http://go.mail.ru/?qs=1&lfilter=yes&words=Delphi+Excel+%FD%EA%F1%EF%EE%F0%F2&change=2
← →
Карелин Артем © (2004-04-09 14:29) [7]http://go.mail.ru/?qs=1&lfilter=yes&words=Delphi+Excel+%FD%EA%F1%EF%EE%F0%F2&change=2
← →
Fay © (2004-04-09 14:29) [8]Я тебе свой модуль для Ёxcel-я закинул. Для Word-а под рукой нету.
← →
Fay © (2004-04-09 14:29) [8]Я тебе свой модуль для Ёxcel-я закинул. Для Word-а под рукой нету.
← →
Fay © (2004-04-09 14:30) [9]2Карелин Артем ©
8)
← →
Fay © (2004-04-09 14:30) [9]2Карелин Артем ©
8)
← →
Карелин Артем © (2004-04-09 14:40) [10]Fay © (09.04.04 14:30) [9]
Такой вот я.
ev ©
Чтобы не быть жлобом, пишу свой код экспорта. Сохранить думаю найдешь как самостоятельно.var Excel,WorkBook,Sheet,Area:variant;
i:integer;
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;
i:=MainData.Grid2ExcelEx(Sheet,3,1,DBGridEh1,True);
Sheet.Cells.Columns.AutoFit;
Sheet.Cells[i+1,1].Value:="Всего";
Sheet.Cells[i+1,3].FormulaR1C1:="=SUM(R[-"+IntToStr(i-3)+"]C:R[-1]C)";
Area:=Sheet.UsedRange;
Sheet.Cells[1,1].Value:=MainData.GetTitle1("");
Sheet.Cells[2,1].Value:=MainData.Get1DateTitle(Self.Caption,Now);
(DateEdit1.Date);
Area.Borders.LineStyle :=1;
Area.BorderAround(1,3);
Area.HorizontalAlignment:=-4131;
Sheet.UsedRange.NumberFormat:="@";
Excel.Visible:=true;
Excel.ScreenUpdating:=true;
Sheet:=Unassigned;
WorkBook:=Unassigned;
Excel:=Unassigned;
*****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
// if Grid.DataSource.DataSet.IsEmpty then exit;
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, RowCount+1, 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;
if Result<1 then Result:=1;
end;
← →
Карелин Артем © (2004-04-09 14:40) [10]Fay © (09.04.04 14:30) [9]
Такой вот я.
ev ©
Чтобы не быть жлобом, пишу свой код экспорта. Сохранить думаю найдешь как самостоятельно.var Excel,WorkBook,Sheet,Area:variant;
i:integer;
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;
i:=MainData.Grid2ExcelEx(Sheet,3,1,DBGridEh1,True);
Sheet.Cells.Columns.AutoFit;
Sheet.Cells[i+1,1].Value:="Всего";
Sheet.Cells[i+1,3].FormulaR1C1:="=SUM(R[-"+IntToStr(i-3)+"]C:R[-1]C)";
Area:=Sheet.UsedRange;
Sheet.Cells[1,1].Value:=MainData.GetTitle1("");
Sheet.Cells[2,1].Value:=MainData.Get1DateTitle(Self.Caption,Now);
(DateEdit1.Date);
Area.Borders.LineStyle :=1;
Area.BorderAround(1,3);
Area.HorizontalAlignment:=-4131;
Sheet.UsedRange.NumberFormat:="@";
Excel.Visible:=true;
Excel.ScreenUpdating:=true;
Sheet:=Unassigned;
WorkBook:=Unassigned;
Excel:=Unassigned;
*****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
// if Grid.DataSource.DataSet.IsEmpty then exit;
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, RowCount+1, 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;
if Result<1 then Result:=1;
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.036 c