Ich habe den Code für das Speichern des Ausgabewerts des gespeicherten Verfahrens in einem Excel-Blatt angehängt.
aber ich habe ein paar Probleme, sie sind
(1) alle Spalten werden in der ersten Spalte des Excel-Blatts angezeigt.. was ich nicht brauche, ich möchte den Bericht in verschiedenen Spalten anzeigen.. wie mache ich das..
(2) wenn ich einen inneren Join mit dem Haupt verwende, wie kann ich die Spaltennamen der anderen Tabelle erhalten?
Kann mir bitte jemand helfen, die oben genannten Probleme zu lösen?
alter procedure proc_generate_excel_with_columns
(
@db_name varchar(100),
@schm_name varchar(100),
@table_name varchar(100),
@file_name varchar(100)
)
as
--Generate column names as a recordset
declare @columns varchar(8000), @sql varchar(8000), @data_file varchar(100)
select
@columns = coalesce(@columns+',', '') + column_name + ' as ' + column_name
from
information_schema.columns
where
table_name = @table_name
select
@columns = '''' + replace(replace(@columns, ' as ', ''' as '),',',',''')
--Create a dummy file to have actual data
select
@data_file = substring(@file_name, 1, len(@file_name) -
charindex('\', reverse(@file_name))) + '\data_file.xls'
--Generate column names in the passed EXCEL file
set @sql='bcp " select * from (select ' + @columns + ') as t" queryout
c:\test.xls -c -t, -T -S ' + @@servername
exec master..xp_cmdshell @sql
--Generate data in the dummy file
set @sql = 'bcp "select * from st..VEN_FULLREPORTMASTER
where entry_date = convert(varchar, getdate() - 3, 105) "
queryout c:\data_file.xls -c -t, -T -S' + @@servername
-- exec master..xp_cmdshell @sql
-- Copy dummy file to passed EXCEL file
set @sql = 'exec master..xp_cmdshell ''type '+@data_file+' >> "'+@file_name+'"'''
exec(@sql)
----Delete dummy file
set @sql = 'exec master..xp_cmdshell ''del ' + @data_file + ''''
exec(@sql)
0 Stimmen
Im ersten Fall habe ich die Lösung gefunden .. wir müssen nur eine Änderung im Ausgabedateiformat vornehmen .. es sollte .csv anstelle von .xls sein.
0 Stimmen
Müssen Sie eine gespeicherte Prozedur verwenden, um die Daten zu exportieren, oder suchen Sie einfach nach einer Möglichkeit, eine Abfrage auszuführen und die Ergebnisse in eine CSV/Excel-Datei (mit Kopfzeilen) zu exportieren?
0 Stimmen
Hallo billinkc, ich habe beide Probleme gelöst..danke
0 Stimmen
@navbingo würde es dir etwas ausmachen zu teilen, was du am Ende gemacht hast?