Đây là bài đăng tốt nhất để xuất sang excel từ SQL:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID =49926
Để trích dẫn từ người dùng madhivanan
,
Ngoài việc sử dụng thuật sĩ DTS và Export, chúng tôi cũng có thể sử dụng truy vấn này để xuất dữ liệu từ SQL Server2000 sang Excel
Tạo một tệp Excel được đặt tên là kiểm tra có tiêu đề giống như tiêu đề của các cột trong bảng và sử dụng các truy vấn này
1 Xuất dữ liệu sang tệp EXCEL hiện có từ bảng SQL Server
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;',
'SELECT * FROM [SheetName$]') select * from SQLServerTable
2 Xuất dữ liệu từ Excel sang bảng SQL Server mới
select *
into SQLServerTable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;HDR=YES',
'SELECT * FROM [Sheet1$]')
3 Xuất dữ liệu từ Excel sang bảng SQL Server hiện có (đã chỉnh sửa)
Insert into SQLServerTable Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;HDR=YES',
'SELECT * FROM [SheetName$]')
4 Nếu bạn không muốn tạo trước tệp EXCEL và muốn xuất dữ liệu sang tệp đó, hãy sử dụng
EXEC sp_makewebtask
@outputfile = 'd:\testing.xls',
@query = 'Select * from Database_name..SQLServerTable',
@colheaders =1,
@FixedFont=0,@lastupdated=0,@resultstitle='Testing details'
(Bây giờ bạn có thể tìm thấy tệp có dữ liệu ở định dạng bảng)
5 Để xuất dữ liệu sang tệp EXCEL mới với tiêu đề (tên cột), hãy tạo quy trình sau
create procedure proc_generate_excel_with_columns
(
@db_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
[email protected]_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='exec master..xp_cmdshell ''bcp " select * from (select '[email protected]+') as t" queryout "'[email protected]_name+'" -c'''
exec(@sql)
--Generate data in the dummy file
set @sql='exec master..xp_cmdshell ''bcp "select * from '[email protected]_name+'..'[email protected]_name+'" queryout "'[email protected]_file+'" -c'''
exec(@sql)
--Copy dummy file to passed EXCEL file
set @sql= 'exec master..xp_cmdshell ''type '[email protected]_file+' >> "'[email protected]_name+'"'''
exec(@sql)
--Delete dummy file
set @sql= 'exec master..xp_cmdshell ''del '[email protected]_file+''''
exec(@sql)
Sau khi tạo thủ tục, hãy thực thi nó bằng cách cung cấp tên cơ sở dữ liệu, tên bảng và đường dẫn tệp:
EXEC proc_generate_excel_with_columns 'your dbname', 'your table name','your file path'
Nó dài 29 trang nhưng đó là do những người khác chỉ ra nhiều cách khác nhau cũng như mọi người đặt câu hỏi giống như câu hỏi này về cách thực hiện.
Theo dõi hoàn toàn chủ đề đó và xem xét các câu hỏi khác nhau mà mọi người đã hỏi và cách chúng được giải quyết. Tôi đã thu thập được kha khá kiến thức chỉ cần đọc lướt qua nó và đã sử dụng từng phần của nó để có được kết quả như mong đợi.
Để cập nhật các ô đơn
Một thành viên cũng ở đó Peter Larson đăng bài viết như sau:Tôi nghĩ rằng một điều còn thiếu ở đây. Thật tuyệt khi có thể Xuất và Nhập sang tệp Excel, nhưng cập nhật các ô đơn thì sao? Hay một loạt các ô?
Đây là nguyên tắc về cách bạn quản lý điều đó
update OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=c:\test.xls;hdr=no',
'SELECT * FROM [Sheet1$b7:b7]') set f1 = -99
Bạn cũng có thể thêm công thức vào Excel bằng cách sử dụng sau:
update OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=c:\test.xls;hdr=no',
'SELECT * FROM [Sheet1$b7:b7]') set f1 = '=a7+c7'
Xuất với tên cột bằng T-SQL
Thành viên Mladen Prajdic cũng có một mục blog về cách thực hiện điều này tại đây
Tài liệu tham khảo: www.sqlteam.com (btw đây là một blog / diễn đàn tuyệt vời cho bất kỳ ai muốn khai thác thêm sức mạnh của SQL Server). Đối với lỗi tham chiếu, tôi đã sử dụng this
Các lỗi có thể xảy ra
Nếu bạn gặp lỗi sau:
Sau đó chạy cái này:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO