![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 17.05.2012
Сообщений: 2
|
![]()
Помогите мне пожалуйста, я никак не могу этого сделать...Надо из Excel перенести данные в Stringgrid.
Код,который есть на всех форумах конечно хороший, uses ComObj; function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean; const xlCellTypeLastCell = $0000000B; var XLApp, Sheet: OLEVariant; RangeMatrix: Variant; x, y, k, r: Integer; begin Result := False; // Create Excel-OLE Object XLApp := CreateOleObject('Excel.Application' ); try // Hide Excel XLApp.Visible := False; // Open the Workbook XLApp.Workbooks.Open(AXLSFile); // Sheet := XLApp.Workbooks[1].WorkSheets[1]; Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1]; // In order to know the dimension of the WorkSheet, i.e the number of rows // and the number of columns, we activate the last non-empty cell of it Sheet.Cells.SpecialCells(xlCellType LastCell, EmptyParam).Activate; // Get the value of the last row x := XLApp.ActiveCell.Row; // Get the value of the last column y := XLApp.ActiveCell.Column; // Set Stringgrid's row &col dimensions. AGrid.RowCount := x; AGrid.ColCount := y; // Assign the Variant associated with the WorkSheet to the Delphi Variant RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value; // Define the loop for filling in the TStringGrid k := 1; repeat for r := 1 to y do AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R]; Inc(k, 1); AGrid.RowCount := k + 1; until k > x; // Unassign the Delphi Variant Matrix RangeMatrix := Unassigned; finally // Quit Excel if not VarIsEmpty(XLApp) then begin // XLApp.DisplayAlerts := False; XLApp.Quit; XLAPP := Unassigned; Sheet := Unassigned; Result := True; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin if Xls_To_StringGrid(StringGrid1, 'C:\Table1.xls') then ShowMessage('Table has been exported!'); end; но есть одна загвоздка..он не работает..хотя все пишут,что у них работает..моя проблема в том,что жалуется на строчку Sheet.Cells.SpecialCells(xlCellType LastCell, EmptyParam).Activate; С этой проблемой я долго не могла справиться, в итоге где-то нашла,что нужно перед ней написать Sheet.activate; В итоге эту ошибку я обошла, но возникла другая..и с ней вообще не понятно... помогите!!!!!!!!!!1 AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R]; |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
перенос данных из excel в word | D_e_n_n | Microsoft Office Excel | 9 | 14.03.2011 08:06 |
Excel - перенос данных в ячейках | beerbitch | Microsoft Office Excel | 15 | 12.03.2010 17:33 |
Перенос данных в Excel | barmy | Microsoft Office Word | 1 | 17.12.2009 09:09 |
Перенос данных из MS Word в MS Excel ? | Nickd5 | Помощь студентам | 2 | 28.06.2008 20:40 |