Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/26: Рейтинг темы: голосов - 26, средняя оценка - 4.96
2 / 2 / 1
Регистрация: 07.02.2012
Сообщений: 20

Экспорт в Excel

07.02.2012, 09:16. Показов 5290. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Извеняюсь много тем было написанно, но привыполнение кода выдаёт List index out of bounds (0)
вот код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
procedure TfTehnika.BitBtn3Click(Sender: TObject);
var XLApp,Sheet,Colum:Variant;
    index,i:Integer;
begin
XLApp:=CreateOleObject('Excel.Application');
XLApp.Visible:=false;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='Îò÷¸ò';
Colum:=XLApp.Workbooks[1].WorkSheets['Îò÷¸ò'].Columns;
  Colum.Columns[1].ColumnWidth:=8;
  Colum.Columns[2].ColumnWidth:=44;
  Colum.Columns[3].ColumnWidth:=11;
  Colum.Columns[4].ColumnWidth:=10;
  Colum.Columns[5].ColumnWidth:=10;
  Colum.Columns[6].ColumnWidth:=20;
  Colum.Columns[7].ColumnWidth:=20;
Colum:=XLApp.Workbooks[1].WorkSheets['Îò÷¸ò'].Rows;
  Colum.Rows[1].WrapText:=True;
Sheet:=XLApp.Workbooks[1].WorkSheets['Îò÷¸ò'];
  Sheet.Cells[1,1]:=fDM.TTehnika.IndexDefs.Items[0].Fields;
  Sheet.Cells[2,1]:=fDM.TTehnika.IndexDefs.Items[1].Fields;
  Sheet.Cells[3,1]:=fDM.TTehnika.IndexDefs.Items[2].Fields;
  Sheet.Cells[4,1]:=fDM.TTehnika.IndexDefs.Items[3].Fields;
  Sheet.Cells[5,1]:=fDM.TTehnika.IndexDefs.Items[4].Fields;
  Sheet.Cells[6,1]:=fDM.TTehnika.IndexDefs.Items[5].Fields;
  Sheet.Cells[7,1]:=fDM.TTehnika.IndexDefs.Items[6].Fields;
  Sheet.Cells[8,1]:=fDM.TTehnika.IndexDefs.Items[7].Fields;
for i:=0 to fDM.TTehnika.RecordCount - 1 do begin
  fDM.TTehnika.RecNo:=i; //Íîìåð çàïèñè
  Sheet.Cells[index,1]:=fDM.TTehnika.FieldByName('Cîòðóäíèê').AsString;
  //È òàê äàëåå (íàäî óêàçàòü íàçâàíèå ïîëÿ, ýòî áóäåò êîëîíêà)
  Sheet.Cells[index,2]:=fDM.TTehnika.FieldByName('Ñëóæáà').AsString;
  Sheet.Cells[index,3]:=fDM.TTehnika.FieldByName('Êàáèíåò').AsString;
  Sheet.Cells[index,4]:=fDM.TTehnika.FieldByName('Èíâ.¹').AsString;
  Sheet.Cells[index,5]:=fDM.TTehnika.FieldByName('Âíóòð.¹').AsString;
  Sheet.Cells[index,6]:=fDM.TTehnika.FieldByName('Òèï').AsString;
  Sheet.Cells[index,7]:=fDM.TTehnika.FieldByName('Ïðèìå÷àíèå').AsString;
 
end;
XLApp.Visible:=true;
XLApp.Workbooks[1].WorkSheets[1].PrintOut;
if not VarIsEmpty(XLApp) then begin
  XLApp.DisplayAlerts := False;
  XLApp.Quit;
  XLAPP := Unassigned;
  Sheet := Unassigned;
end;
end;
я не сильно разбираюсь просьба сильно не ругаться)
Заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2012, 09:16
Ответы с готовыми решениями:

Экспорт в Excel
есть программа написана ещё на делфи 4 в нём очень много всего форм штук 40 столько же всяких запросов и тд которую вижу первый раз. В ней...

Экспорт в Excel
Вот участок кода, при компиляции ошибок не выдает, но при запуске этой процедуры возникает ошибка "Project Project1.exe raised...

Экспорт в Excel
Доброго времени суток! Хочу вот организовать экспорт в эксель из стрингрида и столкнулся с такой проблемой. Мне нужно экспортировать данные...

29
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
07.02.2012, 15:22
Студворк — интернет-сервис помощи студентам
В цикле
Delphi
1
while not fDM.TTehnika.Eof do begin
можно поставить счётчик - сколько он насчитает, столько строк данных передано. Там уже есть счётчик - это переменная i, но в ней счёт начинается с 2. Потому что на значении 1 распечатывается шапка таблицы. Поэтому, если ориентироваться в данном случае на переменную i, то количество переданных строк данных будет равно: (i - 1). Значение i надо взять после окончания цикла while.
0
2 / 2 / 1
Регистрация: 07.02.2012
Сообщений: 20
07.02.2012, 15:41  [ТС]
Цитата Сообщение от Mawrat Посмотреть сообщение
В цикле
Delphi
1
while not fDM.TTehnika.Eof do begin
можно поставить счётчик - сколько он насчитает, столько строк данных передано. Там уже есть счётчик - это переменная i, но в ней счёт начинается с 2. Потому что на значении 1 распечатывается шапка таблицы. Поэтому, если ориентироваться в данном случае на переменную i, то количество переданных строк данных будет равно: (i - 1). Значение i надо взять после окончания цикла while.
Правильно ли я понял, счётчик я ставлю после того как этот цикл заканчивает выводить данные в эксель, и после этого сам счётчик выводит дополнительную строчку в эксель?
0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
07.02.2012, 16:50
Цитата Сообщение от S1neR Посмотреть сообщение
и после этого сам счётчик выводит дополнительную строчку в эксель?
Нет - счётчик это всего лишь целочисленная переменная, значение которой мы увеличиваем каждый раз, когда распечатываем очередную запись в Excel. Чтобы напечатать показания счётчика на листе Excel надо добавить в код несколько строк.
Например, вот так можно сделать. Здесь в качестве счётчика переменная Cnt:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
procedure TfTehnika.BitBtn3Click(Sender: TObject);
var XLApp,Sheet,Colum:Variant;
    i, Cnt : Integer;
begin
XLApp:=CreateOleObject('Excel.Application');
XLApp.Visible := True;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт';
Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Columns;
  Colum.Columns[1].ColumnWidth:=8;
  Colum.Columns[2].ColumnWidth:=44;
  Colum.Columns[3].ColumnWidth:=11;
  Colum.Columns[4].ColumnWidth:=10;
  Colum.Columns[5].ColumnWidth:=10;
  Colum.Columns[6].ColumnWidth:=20;
  Colum.Columns[7].ColumnWidth:=20;
Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Rows;
  Colum.Rows[1].WrapText:=True;
Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт'];
 
  i := 1;
  Sheet.Cells[i,1]:=fDM.TTehnika.FieldDefList[0].Name;
  Sheet.Cells[i,2]:=fDM.TTehnika.FieldDefList[1].Name;
  Sheet.Cells[i,3]:=fDM.TTehnika.FieldDefList[2].Name;
  Sheet.Cells[i,4]:=fDM.TTehnika.FieldDefList[3].Name;
  Sheet.Cells[i,5]:=fDM.TTehnika.FieldDefList[4].Name;
  Sheet.Cells[i,6]:=fDM.TTehnika.FieldDefList[5].Name;
  Sheet.Cells[i,7]:=fDM.TTehnika.FieldDefList[6].Name;
  Sheet.Cells[i,8]:=fDM.TTehnika.FieldDefList[7].Name;
 
  //Переходим в начало набора данных.
  fDM.TTehnika.First;
  //Обнуляем счётчик.
  Cnt := 0;
  while not fDM.TTehnika.Eof do begin
    //Счётчик распечатанных строк.
    Inc(Cnt);
    //Очередной номер строки в Excel.
    Inc(i);
    Sheet.Cells[i,1].Value := fDM.TTehnika.Fields[0].AsString;
    Sheet.Cells[i,2].Value := fDM.TTehnika.Fields[1].AsString;
    Sheet.Cells[i,3].Value := fDM.TTehnika.Fields[2].AsString;
    Sheet.Cells[i,4].Value := fDM.TTehnika.Fields[3].AsString;
    Sheet.Cells[i,5].Value := fDM.TTehnika.Fields[4].AsString;
    Sheet.Cells[i,6].Value := fDM.TTehnika.Fields[5].AsString;
    Sheet.Cells[i,7].Value := fDM.TTehnika.Fields[6].AsString;
    Sheet.Cells[i,8].Value := fDM.TTehnika.Fields[7].AsString;
    //Переход к следующей записи набора данных.
    fDM.TTehnika.Next;
  end;
  
  //На листе Excel под таблицей выводим сведения - сколько записей мы распечатали.
  Inc(i, 2);
  Sheet.Cells[i, 1].Value := 'Всего записей: ' + IntToStr(Cnt);
end;
1
2 / 2 / 1
Регистрация: 07.02.2012
Сообщений: 20
07.02.2012, 20:39  [ТС]
Спасибо большое) интересный момент) чуть чуть ещё поданимаю) если конешно позволите, если я на примере шаблона хочу создать отчёт, т.е я делаю шаблон по которому буду выводить таблицу, потом
Delphi
1
XLApp.Workbooks.Open(имя файла)
и после этого по шаблону создаю новый лист?

Не по теме:

для саморазвития самое то) заставляет думать):umnik:



Добавлено через 3 часа 16 минут
я наверное тупой, но как мне сделать обводку строк которые выводят значения из бд?
пробывал задать значение
Delphi
1
Colum.Columns[1].Borders.LineStyle:=1
но он прорисовывает до бесконечности, как сделать что бы обводка была только тех записей которые выгружается?
0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
07.02.2012, 20:40
Можно открыть книгу шаблона, прямо в неё записать нужные данные, а затем сохранить эту книгу под другим именем.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
uses
  ComObj;
 
var
  exApp, exBook, exSheet : Variant;
  FnTemplate, FnNew : String;
begin
...
  //Ссылка на объект приложения.
  exApp := CreateOleObject('Excel.Application');
  //Открываем рабочую книгу шаблона и получаем на неё ссылку.
  exBook := exApp.Workbooks.Open(FnTemplate);
  //Ссылка на первый лист рабочей книги шаблона.
  exSheet := exBook.Worksheets[1];
  //Записываем какие-то данные на лист.
  exSheet.Cells[i, j].Value := ...;
...
  //Отключаем режим показа предупреждений.
  //Это нужно на случай, если файл с таким же именем уже существует. В этом случае,
  //если режим показа предупреждений не отключить, то Excel откроет диалог, в котором
  //пользователь должен будет выбрать - перезаписать этот файл или отказаться.
  //Если нам не надо, чтобы пользователь участвовал в этом процессе, следует отключить
  //режим показа предупреждений, что мы сейчас и делаем.
  exApp.DisplayAlerts := False;
  //Сохраняем книгу под другим именем.
  exBook.Save(FnNew);
  //Включаем режим показа предупреждений, если требуется.
  //exApp.DisplayAlerts := True;
  //Закрываем рабочую книгу.
  exBook.Close;
  //Выходим из Excel.
  exApp.Quit;
end;
На всякий случай напомню. Если на лист Excel переносится много данных, то работа может существенно затормозиться из-за того, что окно Excel перерисовывается после каждого изменения на листе. Чтобы временно отключить перерисовку делается так:
Delphi
1
2
3
4
5
6
7
8
...
  //Отключаем перерисовку окна MS Excel.
  exApp.ScreenUpdating := False;
  //Изменение данных на листах книги Excel.
...
  //Включаем перерисовку окна.
  exApp.ScreenUpdating := True;
...
0
2 / 2 / 1
Регистрация: 07.02.2012
Сообщений: 20
07.02.2012, 20:52  [ТС]
Это я сделал по шаблону у меня прорисовывается Статические данные которые не меняются, а вот данные которые попадают на шаблон при выгрузке, их же может быть 100 и т.д ,если я прорисую в шаблоне все линии на странице, то он будет их прорисовывать даже без записей, а это как то не эстетично) подскажи как хотябы примерно это сделать буду мучать мозг)
0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
07.02.2012, 21:12
Цитата Сообщение от S1neR Посмотреть сообщение
как мне сделать обводку строк которые выводят значения из бд?
Для оформления в Excel, в программе следует объявить константы:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const
 
  //Константы Excel.
 
  //Группа констант XlBordersIndex. Задаёт расположение линий.
  //
  //Линия по диагонали сверху - вниз.
  xlDiagonalDown = 5;
  //Линия по диагонали снизу - вверх.
  xlDiagonalUp = 6;
  //Линия, обрамляющая диапазон снизу.
  xlEdgeBottom = 9;
  //Линия, обрамляющая диапазон слева.
  xlEdgeLeft = 7;
  //Линия, обрамляющая диапазон справа.
  xlEdgeRight = 10;
  //Линия, обрамляющая диапазон сверху.
  xlEdgeTop = 8;
  //Все горизонтальные линии внутри диапазона.
  xlInsideHorizontal = 12;
  //Все вертикальные линии внутри диапазона.
  xlInsideVertical = 11;
 
  //Группа констант XlBorderWeight. Задаёт стиль линий.
  //
  //(_________) Непрерывная.
  xlContinuous = 1;
  //(_ _ _ _ _) В виде последовательности тире.
  xlDash = -4115;
  //(_._._._._) В виде тире и точек.
  xlDashDot = 4;
  //(_.._.._..) В виде тире и двойных точек.
  xlDashDotDot = 5;
  //(.........) В виде точек.
  xlDot = -4118;
  //(=========) В виде двойной линии.
  xlDouble = -4119;
  //(         ) Отсутствие линии.
  xlLineStyleNone = -4142;
  //(/././././) В виде наклонных тире и точек.
  xlSlantDashDot = 13;
 
  //Группа констант XlBorderWeight. Задаёт толщину линий.
  //
  //Очень тонкая.
  xlHairline = 1;
  //Тонкая
  xlThin = 2;
  //Средняя.
  xlMedium = -4138;
  //Толстая.
  xlThick = 4;
Затем, на примере ранее рассматриваемого кода можно сделать так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
procedure TfTehnika.BitBtn3Click(Sender: TObject);
var
  XLApp, Sheet, Colum, exRng : Variant;
  i, Cnt : Integer;
begin
XLApp:=CreateOleObject('Excel.Application');
XLApp.Visible := True;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт';
Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Columns;
  Colum.Columns[1].ColumnWidth:=8;
  Colum.Columns[2].ColumnWidth:=44;
  Colum.Columns[3].ColumnWidth:=11;
  Colum.Columns[4].ColumnWidth:=10;
  Colum.Columns[5].ColumnWidth:=10;
  Colum.Columns[6].ColumnWidth:=20;
  Colum.Columns[7].ColumnWidth:=20;
Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Rows;
  Colum.Rows[1].WrapText:=True;
Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт'];
 
  i := 1;
  Sheet.Cells[i,1]:=fDM.TTehnika.FieldDefList[0].Name;
  Sheet.Cells[i,2]:=fDM.TTehnika.FieldDefList[1].Name;
  Sheet.Cells[i,3]:=fDM.TTehnika.FieldDefList[2].Name;
  Sheet.Cells[i,4]:=fDM.TTehnika.FieldDefList[3].Name;
  Sheet.Cells[i,5]:=fDM.TTehnika.FieldDefList[4].Name;
  Sheet.Cells[i,6]:=fDM.TTehnika.FieldDefList[5].Name;
  Sheet.Cells[i,7]:=fDM.TTehnika.FieldDefList[6].Name;
  Sheet.Cells[i,8]:=fDM.TTehnika.FieldDefList[7].Name;
 
  //Ссылка на объект диапазона, который содержит шапку таблицы.
  exRng := Sheet.Range[ Sheet.Cells[1, 1],  Sheet.Cells[1, 8] ];
  //Линии делаем сплошными и толстыми.
  exRng.Borders.LineStyle := xlContinuous;
  exRng.Borders.Weight := xlThick;
 
  //Переходим в начало набора данных.
  fDM.TTehnika.First;
  //Обнуляем счётчик.
  Cnt := 0;
  while not fDM.TTehnika.Eof do begin
    //Счётчик распечатанных строк.
    Inc(Cnt);
    //Очередной номер строки в Excel.
    Inc(i);
    Sheet.Cells[i,1].Value := fDM.TTehnika.Fields[0].AsString;
    Sheet.Cells[i,2].Value := fDM.TTehnika.Fields[1].AsString;
    Sheet.Cells[i,3].Value := fDM.TTehnika.Fields[2].AsString;
    Sheet.Cells[i,4].Value := fDM.TTehnika.Fields[3].AsString;
    Sheet.Cells[i,5].Value := fDM.TTehnika.Fields[4].AsString;
    Sheet.Cells[i,6].Value := fDM.TTehnika.Fields[5].AsString;
    Sheet.Cells[i,7].Value := fDM.TTehnika.Fields[6].AsString;
    Sheet.Cells[i,8].Value := fDM.TTehnika.Fields[7].AsString;
    //Переход к следующей записи набора данных.
    fDM.TTehnika.Next;
  end;
  
  //Ссылка на объект диапазона, который содержит данные.
  exRng := Sheet.Range[ Sheet.Cells[2, 1],  Sheet.Cells[i, 8] ];
  //Линии делаем сплошными и тонкими.
  exRng.Borders.LineStyle := xlContinuous;
  exRng.Borders.Weight := xlThin;
  
  //На листе Excel под таблицей выводим сведения - сколько записей мы распечатали.
  Inc(i, 2);
  Sheet.Cells[i, 1].Value := 'Всего записей: ' + IntToStr(Cnt);
end;
---
Вообще, принцип здесь такой. Открываем Excel, затем, открываем редактор Visual Basic for Application (VBA). В Excel запускаем макрос и записываем нужные действия. Потом запись макроса надо остановить, перейти в редактор VBA и посмотреть какие действия сделаны. Затем, этот код следует перенести с некоторыми изменениями в Delphi. Если в коде VBA имеются какие-то константы, тогда, чтобы определить их значение, делается так. В редакторе VBA надо щёлкнуть правой кнопкой мыши по константе и в контекстном меню выбрать: Definition (Определение) - откроется окно браузера объектов Object Browser. В этом окне окажется открыта нужная группа констант и в этой группе будет выделена интересующая константа. Внизу окна браузера показывается информация о значении выбранной константы. Эту строку можно прямо скопировать как есть и вставить в код на Delphi.
В общем, удобно работать одновременно в Excel, в редакторе VBA и в Delphi.
1
2 / 2 / 1
Регистрация: 07.02.2012
Сообщений: 20
07.02.2012, 21:54  [ТС]
Спасибо, читал про метод со скриптами, пробывал но не понимал как и что) а вот щас догнал как и что делать)

Не по теме:

Мне кажется или уже получился гайд как сделать выгрузку в эксель и красиво её оформить)



Добавлено через 21 минуту
получается что бы задать обрисовку к примеру
Delphi
1
Sheet.Cells[i,1]:=fDM.TTehnika.FieldDefList[0].Name;
я должен указать
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Линия по диагонали сверху - вниз.
  xlDiagonalDown = 5;
  //Линия по диагонали снизу - вверх.
  xlDiagonalUp = 6;
  //Линия, обрамляющая диапазон снизу.
  xlEdgeBottom = 9;
  //Линия, обрамляющая диапазон слева.
  xlEdgeLeft = 7;
  //Линия, обрамляющая диапазон справа.
  xlEdgeRight = 10;
  //Линия, обрамляющая диапазон сверху.
  xlEdgeTop = 8;
  //Все горизонтальные линии внутри диапазона.
  xlInsideHorizontal = 12;
  //Все вертикальные линии внутри диапазона.
  xlInsideVertical = 11;
где и как её обрисовывать?
0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
07.02.2012, 23:04
Если границы ячеек диапазона со всех сторон надо прорисовывать одинаково, то можно так, как я в предыдущем посте написал:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
...
  //Ссылка на объект диапазона, который содержит шапку таблицы.
  exRng := Sheet.Range[ Sheet.Cells[1, 1],  Sheet.Cells[1, 8] ];
  //Линии делаем сплошными и толстыми.
  exRng.Borders.LineStyle := xlContinuous;
  exRng.Borders.Weight := xlThick;
...
  //Ссылка на объект диапазона, который содержит данные.
  exRng := Sheet.Range[ Sheet.Cells[2, 1],  Sheet.Cells[i, 8] ];
  //Линии делаем сплошными и тонкими.
  exRng.Borders.LineStyle := xlContinuous;
  exRng.Borders.Weight := xlThin;
...
Если прорисовку границ ячеек нужно сделать разными линиями - например, внутренние ячейки обрамить тонкими линиями, а периметр всего диапазона - толстыми линиями, то можно сделать так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
...
  //Ссылка на объект диапазона, который содержит данные.
  exRng := Sheet.Range[ Sheet.Cells[2, 1],  Sheet.Cells[i, 8] ];
  //Сначала, для всех ячеек диапазона делаем линии сплошными и тонкими.
  exRng.Borders.LineStyle := xlContinuous;
  exRng.Borders.Weight := xlThin;
  //Теперь, обрамление диапазона по периметру выполняем толстыми линиями.
  exRange.Borders[xlEdgeTop].Weight := xlThick;
  exRange.Borders[xlEdgeBottom].Weight := xlThick;
  exRange.Borders[xlEdgeLeft].Weight := xlThick;
  exRange.Borders[xlEdgeRight].Weight := xlThick;
...
0
2 / 2 / 1
Регистрация: 07.02.2012
Сообщений: 20
07.02.2012, 23:25  [ТС]
Разобрался спасибо темку можно прикрывать) по этому пункту всё ясно.
Mawrat, большое спасибо за помощь и разьеснения)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.02.2012, 23:25

Экспорт в Excel
Ввожу данные в базу данных,на рисунке показано,как все это дело выглядит,в меню кнопка Экспорт.Но когда экспортирую-экспортируется только...

Экспорт в Excel
Здравствуйте, Как сделать, что записи которые не выводятся вExcel, не занимали пустого поля BeginCol := 1; BeginRow := 5; ...

Экспорт в Excel из ListView
Ребят, делаю вот программку, типо промышленного калькулятора. Застопорился на 2-х моментах. 1. Как мне экспортировать содержимое...

Экспорт StringGrid в Excel
Всем привет. Нужно экспортировать StringGrid в Exel состоящий из 8-ми столбцов Нужно чтобы вот это в начале добавлялось в Exel ...

Экспорт таблицы в Excel
Скажите пожалуйста, как отобразить столбец или строку из dbgrid (adotable) в ворд или ексел? Желательно в шаблон


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru