Как получить данные в Excel, используя QueryTable?
Delphi:
var
AQueryTbl: ExcelQueryTable; ... XL := StartExcel; try
ASheet := (XL.Sheets[1] as _Worksheet); R := ASheet.Range['A1', EmptyParam]; // начальная ячейка для данных
AQueryTbl := ASheet.QueryTables.Add( 'OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' + ExpandFileName('DbDemos.xls') + ';' + 'Extended Properties="Excel 8.0;";', R, 'select * from [employee$]'
); AQueryTbl.RefreshStyle := xlInsertEntireRows; AQueryTbl.Refresh(False);
C#:
Excel.Worksheet oSheet = null; Excel.Range oRng = null; Excel.QueryTable oQT = null; Excel.Application XL = new Excel.Application(); try { XL.Visible = true; XL.Workbooks.Add(Type.Missing); oSheet = (Excel.Worksheet) XL.ActiveSheet; oRng = oSheet.get_Range("A1", Type.Missing); oQT = (Excel.QueryTable) oSheet.QueryTables.Add( "OLEDB;Provider=\"Microsoft.Jet.OLEDB.4.0\";Data Source=\"" + Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles) + "\\Borland Shared\\Data\\dbdemos.mdb\";Persist Security Info=False;", oRng, "select * from Employee"
); oQT.RefreshStyle = Excel.XlCellInsertionMode.xlInsertEntireRows; oQT.Refresh(false); XL.ActiveWorkbook.Saved = true; } finally { oQT = null; oRng = null; oSheet = null; XL.UserControl = true; XL = null; }
После получения данных, в книгу будет добавлена именованная область ячеек, содержащая импортированную таблицу.
QueryTables Property
Add Method
QueryTable Object