[ Car78 @ 06.06.2005. 08:16 ] @
Treba mi jedan primjer procedure za exportovanje podataka u Excel, ako ko ima - najednostavniji select ciji rezultat treba proslijediti u Excel fajl ?? |
[ Car78 @ 06.06.2005. 08:16 ] @
[ franjo_tahi @ 06.06.2005. 10:42 ] @
Evo ti primjera, nije dorađen, ali radi. EXCEL_TLB možeš nači na netu, a ako ne uspiješ javi pa ću ti poslati.
[ Car78 @ 06.06.2005. 13:24 ] @
Pogledao sam ovaj fajl, malo mi je nejasan (dobro mi je nejasan) o cemu se ovdje radi ??? Koliko vidim ovdje se radi o nekim paketu, interfejsima, itd. o necemu sto nisam bas do sada nikada gledao, najblize mi je nekoj JAVA strukturi koda . Meni " jednostavno" treba Uskladistena procedura tj. upit koji se cuva na SQL Serverovoj bazi podataka a omogucuje export podataka iz neke tabele u Excel fajl jednostavnim pokretanjem procedure u Query Anayzer.
[ ivan jeremic @ 06.06.2005. 14:13 ] @
Nemozes da radis to iz stored procedure. Za to se koristi DTS.
E sad .. posto me jako mrzi da ti opisujem ceo proces evo jako nezgrapnog objasnjenja: IZ DTS alata (pokreni ga iz program grupe Microsoft SQL server) izaberi za source tvoj SQL server, za destination tvoj excel fajl. U sledecom koraku izaberi opciju use query to transfer data i tamo ukucaj npr exec spMojaProcedura. Ako zelis da ovo ponavljas vise puta ili eventualno postavis kao job stikliraj opciju Save as DTS package i okini. On ce prebaciti podatke iz sp u excel. Ako si stiklirao onu opciju za package onda u local packages imas taj tvoj paket po imenu koje si mu dao pa mozes da mu odradis desni mis > schedule as job i kazes mu kada da se okida i onda on to radi automatski u zadato vreme i uffff ... to je to. [ Car78 @ 06.06.2005. 14:33 ] @
"Nemozes da radis to iz stored procedure. Za to se koristi DTS. " Dali si siguran za to posto sam nasao na web-u ovu proceduru ali nemogu da je pokrenem, dali je problem do parametara koje joj prosledujem (sto cisti sumnjam) ili nesto drugo ali zapinje negdje ovdje EXEC @hr = sp_OACreate 'SQLOLE.SQLServer', @SQLServer OUT IF @hr <> 0 BEGIN PRINT 'error create SQLOLE.SQLServer' RETURN Pa oko neko uspije da pokrene da mi kaze sto da cinim !! /* Version: SQL Server 6.5 Created by: Alexander Chigrik http://www.MSSQLCity.com/ - all about MS SQL (SQL Server Articles, FAQ, Scripts, Tips and Test Exams). This stored procedure can be used to insert the result set of the particular select statement into Excel file (c:\ImportToExcel.xls, by default). You can pass the server name, user name, user password, the select statement to execute, and the file name to store the results set, as in the example below: EXEC ExportToExcel @server = '.', @uname = 'sa', @QueryText = 'SELECT au_fname FROM pubs..authors', @filename = 'c:\ImportToExcel.xls' */ IF OBJECT_ID('ExportToExcel') IS NOT NULL DROP PROC ExportToExcel GO CREATE PROCEDURE ExportToExcel ( @server varchar(30) = null, @uname varchar(30) = null, @pwd varchar(30) = null, @QueryText varchar(200) = null, @filename varchar(100) = 'c:\ImportToExcel.xls' ) AS DECLARE @SQLServer int, @QueryResults int, @CurrentResultSet int, @object int, @WorkBooks int, @WorkBook int, @Range int, @hr int, @Columns int, @Rows int, @indColumn int, @indRow int, @off_Column int, @off_Row int, @code_str varchar(100), @result_str varchar(255) IF @QueryText IS NULL BEGIN PRINT 'Set the query string' RETURN END -- Sets the server to the local server IF @server IS NULL SELECT @server = @@servername -- Sets the username to the current user name IF @uname IS NULL SELECT @uname = SYSTEM_USER SET NOCOUNT ON EXEC @hr = sp_OACreate 'SQLOLE.SQLServer', @SQLServer OUT IF @hr <> 0 BEGIN PRINT 'error create SQLOLE.SQLServer' RETURN END -- Connect to the SQL Server IF @pwd IS NULL BEGIN EXEC @hr = sp_OAMethod @SQLServer, 'Connect', null, @server, @uname IF @hr <> 0 BEGIN PRINT 'error CONNECT' RETURN END END ELSE BEGIN EXEC @hr = sp_OAMethod @object, 'Connect', null, @server, @uname, @pwd IF @hr <> 0 BEGIN PRINT "error Connect" RETURN END END SELECT @result_str = 'ExecuteWithResults("' + @QueryText + '")' EXEC @hr = sp_OAMethod @SQLServer, @result_str, @QueryResults OUT IF @hr <> 0 BEGIN PRINT 'error with method ExecuteWithResults' RETURN END EXEC @hr = sp_OAMethod @QueryResults, 'CurrentResultSet', @CurrentResultSet OUT IF @hr <> 0 BEGIN PRINT 'error get CurrentResultSet' RETURN END EXEC @hr = sp_OAMethod @QueryResults, 'Columns', @Columns OUT IF @hr <> 0 BEGIN PRINT 'error get Columns' RETURN END EXEC @hr = sp_OAMethod @QueryResults, 'Rows', @Rows OUT IF @hr <> 0 BEGIN PRINT 'error get Rows' RETURN END EXEC @hr = sp_OACreate 'Excel.Application', @object OUT IF @hr <> 0 BEGIN PRINT 'error create Excel.Application' RETURN END EXEC @hr = sp_OAGetProperty @object, 'WorkBooks', @WorkBooks OUT IF @hr <> 0 BEGIN PRINT 'error create WorkBooks' RETURN END EXEC @hr = sp_OAGetProperty @WorkBooks, 'Add', @WorkBook OUT IF @hr <> 0 BEGIN PRINT 'error with method Add' RETURN END EXEC @hr = sp_OAGetProperty @object, 'Range("A1")', @Range OUT IF @hr <> 0 BEGIN PRINT 'error create Range' RETURN END SELECT @indRow = 1 SELECT @off_Row = 0 SELECT @off_Column = 1 WHILE (@indRow <= @Rows) BEGIN SELECT @indColumn = 1 WHILE (@indColumn <= @Columns) BEGIN EXEC @hr = sp_OAMethod @QueryResults, 'GetColumnString', @result_str OUT, @indRow, @indColumn IF @hr <> 0 BEGIN PRINT 'error get GetColumnString' RETURN END EXEC @hr = sp_OASetProperty @Range, 'Value', @result_str IF @hr <> 0 BEGIN PRINT 'error set Value' RETURN END EXEC @hr = sp_OAGetProperty @Range, 'Offset', @Range OUT, @off_Row, @off_Column IF @hr <> 0 BEGIN PRINT 'error get Offset' RETURN END SELECT @indColumn = @indColumn + 1 END SELECT @indRow = @indRow + 1 SELECT @code_str = 'Range("A' + LTRIM(str(@indRow)) + '")' EXEC @hr = sp_OAGetProperty @object, @code_str, @Range OUT IF @hr <> 0 BEGIN PRINT 'error create Range' RETURN END END SELECT @result_str = "exec master..xp_cmdshell 'del " + @filename + "', no_output" EXEC(@result_str) SELECT @result_str = 'SaveAs("' + @filename + '")' EXEC @hr = sp_OAMethod @WorkBook, @result_str IF @hr <> 0 BEGIN PRINT 'error with method SaveAs' RETURN END EXEC @hr = sp_OAMethod @WorkBook, 'Close' IF @hr <> 0 BEGIN PRINT 'error with method Close' RETURN END EXEC @hr = sp_OADestroy @object IF @hr <> 0 BEGIN PRINT 'error destroy Excel.Application' RETURN END EXEC @hr = sp_OADestroy @SQLServer IF @hr <> 0 BEGIN PRINT 'error destroy SQLOLE.SQLServer' RETURN END GO Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|