How to export sql query to an Excel file

I would like when user clicks on ExportToExcel button to run code behind
"select * from tblData where RequestNumber = 77777777"
 to export the query data to a new excel workbook called Request.xls
I am using asp.net and visual basic.
Your help will be greately appreciated.
smc1234Asked:
Who is Participating?
 
mr_nadgerCommented:
whenever I see this question, whether it's exporting from a datatable or gridview, I can do no better than point the OP to Matt Berseth's pages, he explains it all nicely and the code is solid.

http://mattberseth.com/blog/2007/04/export_gridview_to_excel_1.html

I know he's done it in C#, but it shouldn't be difficult to translate :) good luck!
0
 
SAMIR BHOGAYTAFreelancer and IT ConsultantCommented:
use master
go
if object_id('spExportData') is not null
    drop proc spExportData
go
create proc spExportData
(
    @dbName varchar(100) = 'master',
    @sql varchar(5000) = '',    
    @fullFileName varchar(100) = ''
)
as
if @sql = '' or @fullFileName = ''
begin
    select 0 as ReturnValue -- failure
    return
end
-- if DB isn't passed in set it to master
select    @dbName = 'use ' + @dbName + ';'
if object_id('##TempExportData') is not null
    drop table ##TempExportData
if object_id('##TempExportData2') is not null
    drop table ##TempExportData2
-- insert data into a global temp table
declare @columnNames varchar(8000), @columnConvert varchar(8000), @tempSQL varchar(8000)
select    @tempSQL = left(@sql, charindex('from', @sql)-1) + ' into ##TempExportData ' +

     substring(@sql, charindex('from', @sql)-1, len(@sql))
exec(@dbName + @tempSQL)
if @@error > 0
begin
    select 0 as ReturnValue -- failure
    return
end
-- build 2 lists
-- 1. column names
-- 2. columns converted to nvarchar
SELECT    @columnNames = COALESCE( @columnNames  + ',', '') + column_name,
        @columnConvert = COALESCE( @columnConvert  + ',', '') + 'convert(nvarchar(4000),'
        + column_name + case when data_type in ('datetime', 'smalldatetime') then ',121'
                             when data_type in ('numeric', 'decimal') then ',128'
                             when data_type in ('float', 'real', 'money', 'smallmoney') then ',2'
                             when data_type in ('datetime', 'smalldatetime') then ',120'
                             else ''
                        end + ') as ' + column_name
FROM    tempdb.INFORMATION_SCHEMA.Columns
WHERE    table_name = '##TempExportData'
-- execute select query to insert data and column names into new temp table
SELECT    @sql = 'select ' + @columnNames + ' into ##TempExportData2 from (select ' + @columnConvert + ', ''2'' as [temp##SortID]
       from ##TempExportData union all select ''' + replace(@columnNames, ',', ''', ''') + ''', ''1'') t order by [temp##SortID]'
exec (@sql)
-- build full BCP query
select    @sql = 'bcp "' + @dbName + ' select * from ##TempExportData2" queryout "' + @fullFileName + '" -c -CRAW'
-- execute BCP
Exec master..xp_cmdshell @sql
if @@error > 0
begin
    select 0 as ReturnValue -- failure
    return
end
drop table ##TempExportData
drop table ##TempExportData2
select 1 as ReturnValue -- success
go
declare @sql varchar(6800),    @dbName varchar(100), @fullFileName varchar(100)
select    @dbName = 'northwind', @sql = 'select * from orders order by orderdate', @fullFileName = 'e:\test.xls'
exec    master..spExportData @dbName, @sql, @fullFileName
0
 
Miguel OzSoftware EngineerCommented:
You can save your sql query to a datatable and then  this datatable tos csv file (Excel can read it), check:
http://dotnetguts.blogspot.com/2007/01/exporting-datatable-to-csv-file-format.html
http://stackoverflow.com/questions/4959722/c-sharp-datatable-to-csv
0
 
smc1234Author Commented:
Thank you
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.