0

Excelデータをテーブルにインポートし、いくつかのパラメータを更新する次のコードがありますが、すべての行を読み取ることができず、最後の行のみが読み取られています。すべての行を読み取って値を更新できるようにしたいですテーブル

DECLARE c CURSOR FOR select  Barcode,MSISDN,POS,[SIM Card Number],[Date of Sale] FROM
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel     12.0;Database=C:\ActivatedCards.xlsx;HDR=YES', 'SELECT Barcode,MSISDN,POS,[SIM Card     Number],[Date of Sale] FROM [sheet1$]')
declare @Barcode as bigint
declare @MSISDN as bigint
declare @POS as nvarchar(50)
declare @SIMCardNb as bigint
declare @ActivatedDate as date

begin

open c 

fetch next from c into @Barcode,@MSISDN,@POS,@SIMCardNb,@ActivatedDate


WHILE @@FETCH_STATUS = 0
begin
select @Barcode=Barcode,@MSISDN=MSISDN,@POS=POS,@SIMCardNb=[SIM Card     Number],@ActivatedDate=[Date of Sale] FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel  12.0;Database=C:\ActivatedCards.xlsx;HDR=YES', 'SELECT Barcode,MSISDN,POS,[SIM Card  Number],[Date of Sale] FROM [sheet1$]')
where Barcode <> ''

Update Cards 
set 
MSISDN=@MSISDN ,
POSSold=@POS,
Activated=1,
SIMCardNb=@SIMCardNb,
ActivatedDate=@ActivatedDate,
ImportDate=GETDATE(),
CollectionDeadlineDate=DateAdd(Day,30,ImportDate)
where Cards.BarCode=@Barcode


fetch next from c into @Barcode,@MSISDN,@POS,@SIMCardNb,@ActivatedDate
end 


CLOSE c
DEALLOCATE c
4

1 に答える 1

0

NPOI api を使用して、xls、doc、ppt ファイルを読み書きします。microsoft Microsoft.ACE.OLEDB.12.0' ビルトイン API は、このタスクには適していません。

使いやすく、非常に生産的な例は、次の下にあります。

http://npoi.codeplex.com/

于 2013-05-20T10:07:19.090 に答える