![](/img/trans.png)
[英]AutoHotkey script for MS Excel to read a value in a specific cell
[英]How to read the value of a specific cell from MS Excel with ADO query?
我正在嘗試從MS Excel工作表中的特定單元格中提取數據。
Select [A1] from [Sheet1$]
不起作用。
如果有任何幫助,這是我的連接字符串。
Provider=Microsoft.ACE.OLEDB.12.0;
User ID=Admin;Data Source=c:\clients.xlsx;
Mode=Share Deny None;
Extended Properties="Excel 12.0 Xml;
HDR=yes";
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";
Jet OLEDB:Database Password="";
Jet OLEDB:Engine Type=37;
Jet OLEDB:Database Locking Mode=0;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don''t Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False;
Jet OLEDB:Support Complex Data=False';
您已經說過數據具有標題(在連接字符串中使用HDR=YES;
),因此您需要使用該標題行中的列名。 例如,如果您有這樣的一張紙:
A B
1 CODE DESCRIPTION
2 100 This is an item description
3 200 This is another item
您的SELECT
語句為
SELECT Code, Description FROM [Sheet1$] WHERE [Code] = 100
上面的查詢將返回
Code Description
100 This is an item description
如果需要結果列中的特定單元格,可以在查詢后移至該單元格:
ADOQuery1.MoveBy(25); // Move to row 25 of the results
DescriptStr := ADOQuery1.FieldByName('Description').Value;
請注意,使用ADO可能不是訪問單個單元格的最佳方法。 例如,自動化會容易得多:
// You'll need to add ComObj to your uses clause for CreateOleObject
procedure TForm2.Button2Click(Sender: TObject);
var
XLS: Variant;
Range: Variant;
Description: String;
begin
XLS := CreateOleObject('Excel.Application');
try
XLS.WorkBooks.Open('C:\ExcelDocs\MyFile.xls');
// Retrieve the cell
Range := XLS.ActiveWorkBook.WorkSheets[1].Range['B2'];
// Read its content
Description := Range.Value;
ShowMessage(Description); // Displays 'This is an item description'
finally
Range := null; // Release reference
XLS.Quit; // Close Excel application
XLS := null; // Release reference
end;
end;
您確定ADO是獲取特定單元格值的最佳方法嗎? ADO將excel電子表格視為sql表,您的問題類似於“如何從sql server表中獲取記錄#5”。
更好地嘗試OLE自動化。 在那里您可以輕松處理單個單元格或一系列單元格。 這是Microsoft的示例。
如果有標題,則選擇標題的名稱,如果沒有標題,則第一列為F1,然后為F2,依此類推。 您可以嘗試使用SELECT * ...
,然后查找字段名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.