opencelset for excel:我们可以跳过几行吗?

时间:2011-02-08 03:13:14

标签: sql sql-server openrowset

我将使用以下sql从excel读取数据,但有时我需要先跳过几行。例如,真实数据从第5行开始,所以我需要跳过前4行,这是可行的吗?

 SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
    'SELECT * FROM [sheet1$]');

2 个答案:

答案 0 :(得分:16)

使用范围[sheet1 $ A5:Z]而不是整张表[sheet1 $]

SELECT *
FROM OPENROWSET(
    'Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
    'SELECT * FROM [sheet1$A5:Z]'
);

答案 1 :(得分:5)

这将对获得的行进行编号,没有特定的顺序(运气好的话):

SELECT *
FROM (
  SELECT *, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS rownum
  FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
    'SELECT * FROM [sheet1$]')
) s
WHERE rownum > 4;

如果您认为合适,可以通过更改rownum定义来指定某个顺序:

ROW_NUMBER() OVER (ORDER BY specific_column_list) AS rownum