Здравствуйте. Делаю программу, но столкнулся с трудностями.
Помогите с экспортом данных из StringGrid в Excel (или Word, если есть материалы). Обыскал весь интернет, не нашел ничего подходящего.
Модератор: Модераторы
uses ..... comobj,OleServer;
procedure TForm1.SpeedGoClick(Sender: TObject);
const
xlEdgeLeft=$00000007;
xlEdgeTop=$00000008;
xlEdgeBottom=$00000009;
xlEdgeRight=$0000000A;
xlContinuous=$00000001;
xlMedium=$FFFFEFD6;//жирная линия
xlThin=$00000002;//тонкая линия
xlInsideVertical=$0000000B;
xlInsideHorizontal=$0000000C;
xlDiagonalDown=$00000005;
xlDiagonalUp=$00000006;
xlSolid=$00000001;
var
exl:OleVariant;
WorkBook,Sheet:Variant;
CurRow:Integer;//номер текущей строки
begin
exl:=CreateOleObject('Excel.Application');//создаем объект
WorkBook:=exl.Application.WorkBooks.Add;//добавляем книгу
Sheet:=exl.WorkBooks[1].Sheets[1];//страница
Sheet.Columns['A:A'].ColumnWidth:=2.57;//указываем ширину столбцов
Sheet.Columns['I:I'].ColumnWidth:=2.57;
Sheet.Columns['B:B'].ColumnWidth:=7.17;
Sheet.Columns['C:C'].ColumnWidth:=6.17;
Sheet.Columns['D:D'].ColumnWidth:=6.17;
Sheet.Columns['E:E'].ColumnWidth:=4.50;
Sheet.Columns['G:G'].ColumnWidth:=7.33;
Sheet.Columns['J:J'].ColumnWidth:=6.17;
Sheet.Columns['K:K'].ColumnWidth:=4.50;
Sheet.Columns['M:M'].ColumnWidth:=7.33;
Sheet.Columns['O:O'].ColumnWidth:=5.00;
Sheet.Columns['Q:Q'].ColumnWidth:=5.00;
Sheet.Columns['P:P'].ColumnWidth:=5.00;
CurrRow:=1;//встали на 1-ю строку
Sheet.Cells(CurrRow-1,3):='Заголовок 3-го столбца';
Sheet.Cells(CurrRow-1,10):='Заголовок 10-го столбца';
CurRow:=CurRow+1;
Sheet.Cells(CurrRow-1,3):='abcdef';//вставляем наши данные
//здесь можно заняться оформлением - обрамить таблицу жирной линией
Row:='A'+st_row+':R'+fin_row;//указываем выделние области
Sheet.Range[Row].Select;
//exl.Selection.Interior.ColorIndex:=40;
//exl.Selection.Interior.Pattern:=xlSolid;
{ exl.Selection.Borders[xlEdgeLeft].LineStyle:= xlContinuous;
exl.Selection.Borders[xlEdgeLeft].Weight:=xlThin;// xlThin;
// .ColorIndex = xlAutomatic;
exl.Selection.Borders[xlEdgeTop].LineStyle:= xlContinuous;
exl.Selection.Borders[xlEdgeTop].Weight:=xlThin;
//ColorIndex = xlAutomatic
exl.Selection.Borders[xlEdgeBottom].LineStyle:= xlContinuous;
exl.Selection.Borders[xlEdgeBottom].Weight:=xlThin;
//ColorIndex = xlAutomatic
exl.Selection.Borders[xlEdgeRight].LineStyle:= xlContinuous;
exl.Selection.Borders[xlEdgeRight].Weight:=xlThin;
//ColorIndex = xlAutomatic
exl.Selection.Borders[xlInsideVertical].LineStyle:= xlContinuous;
exl.Selection.Borders[xlInsideVertical].Weight:=xlThin;
exl.Selection.Borders[xlInsideHorizontal].LineStyle:= xlContinuous;
exl.Selection.Borders[xlInsideHorizontal].Weight:=xlThin; }
exl.visible:=True;//показываем
//exl.Application.ActiveWorkBook.SaveAs(FileName);
exl.Application.ActiveWorkBook.Save; //сохраняемся
end;
Gampos писал(а):да, действительно виндовс, 7, попробую ваш код и скажу результат.
Gampos писал(а):как думаете
Gampos писал(а):идея отличная
Gampos писал(а):спасибо что помогаете,
StringGrid.SaveToFile('C:\имя каталога\grid.csv'); //StringGrid - твоя таблица
alex208210 писал(а):Не советую использовать OLE, так как это привязка к установке офиса, что есть плохо. Есть более удобные производительные решения собранные в компоненты, которые позволяют быстро и удобно делать экспорт
alexey38 писал(а):А какой смысл делать экспорт в Excel, если Excel не установлен?
alexey38 писал(а):Но в этом случае без форматирования.
Сейчас этот форум просматривают: Google [Bot] и гости: 22