sql2008導出excel
A. sql server 2008能不能導出一個網頁上的數據到excel或者文本文檔怎麼做
網頁上的數據直接導估計夠嗆。需要看看是否能導出為xml格式,那樣有可能可以解讀。
B. 在SQL中如何將查詢結果直接導出為EXCEL表格
SQL Server有一些工具可用來導出和導入數據。這些簡單的工具,例如T-SQL的BULK INSERT語句,或者是BCP工具,都可以將數據以純文本文件的形式傳輸。如果需要處理任何一種其他類型的文件的導入導出,則我們必須使用DTS設計器或者DTS向導構建一個DTS包。最終生成的DTS包是一個我們必須測試、維護和操作的獨立的對象。而傳輸數據的工作則變得更加復雜,即使我們只是想要將一個簡單的Excel文件傳輸到文件系統中。
這里,我建議使用一個簡單,但是很有用的T-SQL 存儲程序,它可以通過使用鏈接伺服器(linked server)技術將數據導出到Excel 中。
為了實現導出,你必須首先創建一個空的有固定名字的Excel文件,並將其放置在伺服器上。我把它命名為Empty.xls,並放置在c:temp的目錄下。這個文件不會被刪除,並且在裝入數據之前,作為目標Excel文件的模板使用。
Empty.xls文件被構建的時候,只含有一個工作頁,名為ExcelTable,其中的第一行(僅有的一行)包含如下字母: A,B,C,...Z。這些字母可作為Excel表的列名稱。這意味著在一個查詢中,我們可以導出26個列。(給定的存儲程序代碼可被修改,以支持結果集中含有更多的列的情況。只需要在Excel模板中簡單地書寫F1, F2 ,F3...,然後更改程序中相應列的列表即可反映出變化了。)
sp_write2Excel是一個T-SQL存儲過程,它獲取目標Excel文件的名字和路徑,結果集中列的數量,以及T-SQL查詢。在查詢中應該使用轉換函數將所有的非字元串數據導入列中,因為最終的Excel單元中數據實際上都是字元串格式的。
這個過程將empty.xls模板文件拷貝到新的目標Excel文件中。然後它再構建一個鏈接伺服器到剛才的文件中,並使用動態的T-SQL來構建這個Excel文件,並且使用插入/選擇語句來將數據寫入其中。
以下是程序代碼:
Create proc sp_write2Excel (@fileName varchar(100),
@NumOfColumns tinyint,
@query varchar(200))
as
begin
declare @dosStmt varchar(200)
declare @tsqlStmt varchar(500)
declare @colList varchar(200)
declare @charInd tinyint
set nocount on
-- 構建列的列表 A,B,C ...
-- 直到達到列的數量.
set @charInd=0
set @colList = 'A'
while @charInd < @NumOfColumns - 1
begin
set @charInd = @charInd + 1
set @colList = @colList + ',' + char(65 + @charInd)
end
-- 創建一個空的Excel 文件作為目標文件,通過拷貝模板Excel 文件來命名
set @dosStmt = ' c:tempempty.xls ' + @fileName
exec master..xp_cmdshell @dosStmt
-- 創建一個「臨時」的鏈接伺服器到剛才的文件中,以用於「導出」數據
EXEC sp_addlinkedserver 'ExcelSource',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
@fileName,
NULL,
'Excel 5.0'
-- 構建一個T-SQL 語句,用於實際導出查詢結果
-- 到目標鏈接伺服器上的表中
set @tsqlStmt = 'Insert ExcelSource...[ExcelTable$] ' + ' ( ' + @colList + ' ) '+ @query
print @tsqlStmt
-- 執行動態的 TSQL語句
exec (@tsqlStmt)
-- 刪除鏈接伺服器
EXEC sp_dropserver 'ExcelSource'
set nocount off
end
GO
程序使用實例:
Use master
go
exec sp_write2Excel
--目標excel文件
'c:tempNorthProcts.xls' ,
-- 結果中列的數量
3,
-- 將要導出結果的查詢
'select convert(varchar(10),ProctId),
ProctName,
Convert (varchar(20),UnitPrice) from Northwind..Procts'
結論,這個程序可作為一個通用的工具將數據導出到Excel工作頁中,而BCP工具則只能將數據導出到文本文件中。
我們可以使用這個程序來代替DTS包設計器,以及DTS向導,每當需要調用這樣的動作的時候,都可以用它將數據導出到excel 文件中。
C. 怎樣將sql server2008中的資料庫導出成excel表格
用SQL Server 2008中的導入/導出工具,數據源為SQL Server ,目標為Excel。
D. 如何把SQLServer表數據導出為Excel文件
1、打開軟體,在資料庫中有一張student表,現在要把這張表中的數據導出成excel文件。
E. SQL資料庫的表裡面的數據怎麼導出到EXCEL裡面
ASP實例代碼,直接將資料庫中的數據導出到EXCEL電子表中:
<!--#includefile="../conn.asp"-->
<%
dims,sql,filename,fs,myfile,x
Setfs=server.CreateObject("scripting.filesystemobject")
'--假設你想讓生成的EXCEL文件做如下的存放
filename=Server.MapPath("users.xls")
'--如果原來的EXCEL文件存在的話刪除它
iffs.FileExists(filename)then
fs.DeleteFile(filename)
endif
'--創建EXCEL文件
setmyfile=fs.CreateTextFile(filename,true)
'Setrs=Server.CreateObject("ADODB.Recordset")
'--從資料庫中把你想放到EXCEL中的數據查出來
'sql="select*fromTb_Execlorderbyiddesc"
'rs.Opensql,conn
StartTime=Request("StartTime")
EndTime=Request("EndTime")
StartEndTime="AddTimebetween#"&StartTime&"00:00:00#and#"&EndTime&"23:59:59#"
strSql="select*frommyeky_myusr"
SetrstData=conn.execute(strSql)
ifnotrstData.EOFandnotrstData.BOFthen
dimtrLine,responsestr
strLine=""
ForeachxinrstData.fields
strLine=strLine&x.name&chr(9)
Next
'--將表的列名先寫入EXCEL
myfile.writelinestrLine
DowhileNotrstData.EOF
strLine=""
foreachxinrstData.Fields
strLine=strLine&x.value&chr(9)
next
myfile.writelinestrLine
rstData.MoveNext
loop
endif
Response.Write"生成EXCEL文件成功,點擊<ahref=""users.xls""target=""_blank"">下載</a>!"
rstData.Close
setrstData=nothing
Conn.Close
SetConn=nothing
%>
F. sql server 2008怎麼導出表結構到excel
SELECT
表名 = case when a.colorder=1 then d.name else '' end,
表說明 = case when a.colorder=1 then isnull(f.value,'') else '' end,
-- 欄位序號 = a.colorder,
欄位名 = a.name,
標識 = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
主鍵 = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,
類型 = b.name,
佔用位元組數 = a.length,
長度 = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小數位數 = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允許空 = case when a.isnullable=1 then '√'else '' end,
默認值 = isnull(e.text,''),
欄位說明 = isnull(g.[value],'')
FROM
syscolumns a
left join
systypes b
on
a.xusertype=b.xusertype
inner join
sysobjects d
on
a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join
syscomments e
on
a.cdefault=e.id
left join
sys.extended_properties g
on
a.id=G.major_id and a.colid=g.minor_id
left join
sys.extended_properties f
on
d.id=f.major_id and f.minor_id=0
-- where d.name='C_PARTY_SPREADER' --如果只查詢指定表,加上此條件
order by
a.id,a.colorder
G. SQL2008導入excel數據
方法如下:
1、打開要導入的Excel文件,觀察第一列是為欄位還是數據。
2、打開SQLServer,在需要導入的數據點擊右鍵 【任務】-【導入數據】
出現導入導出向導。
3、點擊下一步 ,進入【選擇數據源】頁面,注意紅框設置。
4、點擊下一步 ,進入【選擇目標】頁面,注意紅框設置。
5、點擊下一步 ,進入【指定表復制或查詢】頁面,注意紅框設置。
6、點擊下一步 ,進入【選擇源表和源視圖】頁面,注意紅框設置。
7、下一步,直到完成。出現【執行結果頁面】。
8、最後在SqlServer查詢表。
H. sql server 導出excel
1、use test 要單獨成行,後面要跟go
2、testdb 要確定是那個資料庫的!
I. SQL server 怎麼用命令導出成EXCEL
下列方法可將SQL數據導出的Excel中:
1、導入到一個存在的Excel文件,且表頭已經設置:
insert into OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','Excel 12.0;HDR=YES;DATABASE=c:\book1.xlsx',sheet1$) select * from 表。
2、導入為新文件:
EXEC master..xp_cmdshell 'bcp 資料庫名.dbo.表名 out "c:\book1.xls" /c -/S"伺服器名" /U"用戶名" -P"密碼"'。
或
EXEC master..xp_cmdshell 'bcp "SELECT * FROM 資料庫名.dbo.表名 ORDER BY 某欄位" queryout "c:\book1.xls" /c -/S"伺服器名" /U"用戶名" -P"密碼"'。