|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Экспорт данных в Excel
Добрый день.
У меня БД на Акцессе, в БД у меня 2 таблицы, Код:
procedure TSQLEditor.Button4Click(Sender: TObject); var XLApp:Variant; Sheet:Variant; Colum:Variant; index:Integer; i:Integer; k:Variant; begin XLApp:= CreateOleObject('Excel.Application'); XLApp.Visible:=true; // XLApp.Workbooks.Add(-4167); // создание Excell XLApp.Workbooks[1].WorkSheets[1].Name:='Отчет'; // Colum:=XLApp.Workbooks[1].WorkSheets['Отчет'].Columns; // Colum.Columns[1].ColumnWidth:=15; // Colum.Columns[2].ColumnWidth:=15; // Colum.Columns[3].ColumnWidth:=8; // Colum.Columns[4].ColumnWidth:=8; // Colum.Columns[5].ColumnWidth:=10; // Ширина колонок Colum.Columns[6].ColumnWidth:=15; // Colum.Columns[7].ColumnWidth:=25; // Colum.Columns[8].ColumnWidth:=25; // Colum.Columns[9].ColumnWidth:=15; // Colum.Columns[10].ColumnWidth:=15; // Colum:=XLApp.Workbooks[1].WorkSheets['Отчет'].Rows; Colum.Rows[2].Font.Bold:=true; //Выделенный шрифт Colum.Rows[1].Font.Bold:=true; //Выделенный шрифт Colum.Rows[1].Font.Color:=clBlue; //Цвет шрифта Colum.Rows[1].Font.Size:=14; //Размер шрифта Sheet:=XLApp.Workbooks[1].WorkSheets['Отчет']; k:=(Edit1.Text); Sheet.Cells[1,2]:=k; if CheckBox1.State = cbChecked then // Sheet.Cells[2,1]:='Наименование'; if CheckBox2.State = cbChecked then // Sheet.Cells[2,2]:='Марка'; if CheckBox3.State = cbChecked then // Sheet.Cells[2,3]:='Сорт'; if CheckBox4.State = cbChecked then // Sheet.Cells[2,4]:='Вес'; if CheckBox5.State = cbChecked then // Текст в ячейке Sheet.Cells[2,5]:='Цена'; if CheckBox6.State = cbChecked then // Sheet.Cells[2,6]:='Количество'; if CheckBox7.State = cbChecked then // Sheet.Cells[2,7]:='Поставщик(Ассортимент'; if CheckBox8.State = cbChecked then // Sheet.Cells[2,8]:='Поставщик(Поставщик)'; if CheckBox9.State = cbChecked then // Sheet.Cells[2,9]:='Телефон'; if CheckBox10.State = cbChecked then // Sheet.Cells[2,10]:='Адрес'; index:=3; SQLEditor.ADOQuerySQLEditor.First; for i:=0 to SQLEditor.ADOQuerySQLEditor.RecordCount-1 do begin if CheckBox1.State = cbChecked then Sheet.Cells[index,1]:=SQLEditor.ADOQuerySQLEditor.Fields.Fields[0].AsString; // if CheckBox2.State = cbChecked then Sheet.Cells[index,2]:=SQLEditor.ADOQuerySQLEditor.Fields.Fields[1].AsString; // if CheckBox3.State = cbChecked then Sheet.Cells[index,3]:=SQLEditor.ADOQuerySQLEditor.Fields.Fields[2].AsString; // if CheckBox4.State = cbChecked then Sheet.Cells[index,4]:=SQLEditor.ADOQuerySQLEditor.Fields.Fields[3].AsString; // if CheckBox5.State = cbChecked then Sheet.Cells[index,5]:=SQLEditor.ADOQuerySQLEditor.Fields.Fields[4].AsString; // Печать строк if CheckBox6.State = cbChecked then Sheet.Cells[index,6]:=SQLEditor.ADOQuerySQLEditor.Fields.Fields[5].AsString; // if CheckBox7.State = cbChecked then Sheet.Cells[index,7]:=SQLEditor.ADOQuerySQLEditor.Fields.Fields[6].AsString; // if CheckBox8.State = cbChecked then Sheet.Cells[index,8]:=SQLEditor.ADOQuerySQLEditor.Fields.Fields[7].AsString; // if CheckBox9.State = cbChecked then Sheet.Cells[index,9]:=SQLEditor.ADOQuerySQLEditor.Fields.Fields[8].AsString; // if CheckBox10.State = cbChecked then Sheet.Cells[index,10]:=SQLEditor.ADOQuerySQLEditor.Fields.Fields[9].AsString; // Inc(index); // SQLEditor.ADOQuerySQLEditor.Next; // Вроде константа end; end; А когда я сам пишу запрос SELECT марка FROM Assortment; в поле Мемо1, то что в низу, то в DBGrid все отображается как надо, получается SQL запрос работает, а когда я пытаюсь в Excel это дело оформить, то пишется ошибка List index out of bounds(N) N - это номер по счету моей колонки которую я хочу в Excel перенести, попробовал деграббером или как его там, то ошибка вылазит на строке Код:
Sheet.Cells[index,2]:=SQLEditor.ADOQuerySQLEditor.Fields.Fields[1].AsString; прикрепил вложения для полной ясности Последний раз редактировалось th_bav, 25.01.2011 в 14:54. |