2009-05-26 18 views
3

J'exporte avec succès à exceller avec l'énoncé suivant:export SQL Server vers Excel avec OPENROWSET

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=C:\template.xls;', 
'SELECT * FROM [SheetName$]') 
select * from myTable 

Y at-il moyen standard pour utiliser ce modèle spécifiant un nouveau nom pour la feuille Excel afin que le modèle ne ou est-ce que je dois trouver du travail?

Quelle est la meilleure façon de le faire dans l'expérience des gens?

+0

Oh homme chanceux. J'ai déjà passé 2 heures à essayer de faire ça et à avoir toutes sortes d'erreurs. (en utilisant 2008SP2) –

Répondre

7

Vous devez utiliser SQL dynamique. OPENROWSET etc. permet uniquement les littéraux en tant que paramètres.

DECLARE @myfile varchar(800) 

SET @myfile = 'C:\template.xls' 

EXEC (' 
insert into OPENROWSET(''Microsoft.Jet.OLEDB.4.0'', 
''Excel 8.0;Database=' + @myfile + ';'', 
''SELECT * FROM [SheetName$]'') 
select * from myTable 
') 

Rappelez-vous: le chemin est relatif à l'endroit où SQL Server est en cours d'exécution

+0

c'est bon - mais je devrais encore mettre le modèle là en premier lieu de sorte que je ne peux pas trouver des noms dans le SQL, je devrais créer par programme la feuille de calcul d'abord. – JohnIdol

+0

Ah je vous attrape. Non, vous ne pouvez pas manipuler Excel de cette façon dans T-SQL. Peut-être un CLR stocké proc? – gbn

+0

n'a jamais travaillé avec les SP du CLR - mais je pense que c'est assez facile - tout bon échantillon me permet-il de démarrer? – JohnIdol

1

Ne pourriez-vous faire une copie de votre modèle d'abord, puis passer le nom de la copie en OPENROWSET?