: .
, (1) SELECT, SELECTing row (2) SELECTing 64K 8M ( ) ... , - . :
CHUNKSIZE (, 100 1000) (, MAX_ROWS). , .
: , :
: - , :
Q1: ' B14'?
A1: select * from [Sheet1$B12:] . ...B12:IV Excel 2003 , Excel 2007. , , ; . .
Q2: ' B- > D'
A2: select
* from [Sheet1$B:D]
Q3: ' B12: D *', * ", "
A3: * [Sheet1 $B12: D]
Python 2.5, :
import win32com.client
import sys
filename, sheetname, range = sys.argv[1:4]
DSN= """
PROVIDER=Microsoft.Jet.OLEDB.4.0;
DATA SOURCE=%s;
Extended Properties='Excel 8.0;READONLY=true;IMEX=1';
""" % filename
conn = win32com.client.Dispatch("ADODB.Connection")
conn.Open(DSN)
rs = win32com.client.Dispatch("ADODB.Recordset")
sql = (
"SELECT * FROM [Excel 8.0;HDR=NO;IMEX=1;Database=%s;].[%s$%s]"
% (filename, sheetname, range)
)
rs.Open(sql, conn)
nrows = 0
while not rs.EOF:
nrows += 1
nf = rs.Fields.Count
values = [rs.Fields.Item(i).Value for i in xrange(nf)]
print nrows, values
if not any(value is not None for value in values):
print "sentinel found"
break
rs.MoveNext()
rs.Close()
conn.Close()