當前位置:首頁 » 編程語言 » sql導出到excelvb源碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql導出到excelvb源碼

發布時間: 2022-04-23 02:05:06

⑴ VB中把sql資料庫的數據輸出到Excel

用下面這段代碼,根據自己實際修改一下就好

Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
If Adodc1.Recordset.RecordCount > 0 Then
xlApp.Visible = True
xlSheet.Range(xlSheet.Cells(1, 1), xlSheet.Cells(1, 9)).Merge
xlSheet.Range(xlSheet.Cells(1, 1), xlSheet.Cells(1, 9)) = "未發料統計表"
xlSheet.Range(xlSheet.Cells(1, 1), xlSheet.Cells(1, 9)).HorizontalAlignment = xlCenter
xlSheet.Range(xlSheet.Cells(1, 1), xlSheet.Cells(1, 9)).VerticalAlignment = xlCenter

'xlSheet.Cells(1, 9) = "未發料統計表"
For i = 0 To TDBGrid1.Columns.Count - 1
xlSheet.Cells(2, i + 1) = TDBGrid1.Columns(i).Caption
Next i
Adodc1.Recordset.MoveFirst
Do Until Adodc1.Recordset.EOF
i = Adodc1.Recordset.AbsolutePosition
For j = 0 To TDBGrid1.Columns.Count - 1
xlSheet.Cells(i + 2, j + 1) = TDBGrid1.Columns(j)
Next j

Adodc1.Recordset.MoveNext
Loop
xlSheet.Range(xlSheet.Cells(1, 1), xlSheet.Cells(i + 2, j)).Borders.LineStyle = xlContinuous
End If
End Sub

⑵ 在VB中如何實現使SQL Server資料庫表中的數據導出為Excel等格式的數據文件

可以參考以下語句: 都比較簡單

Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
this.EnableViewState = false;
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
int nCur = dgShow.CurrentPageIndex;
int nSize = dgShow.PageSize;

dgShow.AllowPaging = false;
BindData();

dgShow.Columns[7].Visible =false;
dgShow.RenderControl(hw);
dgShow.Columns[7].Visible =true;

//以下恢復分頁
dgShow.AllowPaging = true;
dgShow.CurrentPageIndex = nCur;
dgShow.PageSize = nSize;
BindData();
Response.Write(sw.ToString());
Response.End();

⑶ 在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 文件中。

⑷ vb如何將SQL資料庫查詢的結果導出到帶欄位名的Excel表

你在用CopyFromRecordset前先把欄位名寫上,然後換一行再把數據集拷貝就可以了。
===========================================================
先把這句mExcelFile.Application.Range("A1").CopyFromRecordset
mRs
改為:
mExcelFile.Application.Range("A2").CopyFromRecordset
mRs
然後在這句前面加上下面的代碼試試看,應該可以的:
For
i
=
0
To
mRst.Fields.Count
-
1
mExcelFile.ActiveSheet.Cells(1,
i
+
1).Value
=
mRst.Fields(i).Name
Next
'設置欄位名加粗(如果不需要可忽略此句)
mExcelFile.ActiveSheet.Range(.ActiveSheet.Cells(1,
1),
mExcelFile.ActiveSheet.Cells(1,
mRst.Fields.Count)).Font.Bold
=
True

⑸ VB中把SQL數據導出到EXCEL該怎麼做

建議你直接用excel的VBA,很方便,用ADO鏈接資料庫。
或者excel本身就可以直接連接資料庫。
一定要VB的話,也是ADO連接,然後vb要引用Microsoft Excel xx.0 Object Library,操作excel。
VB.NET的話可以用NPOI/ExcelLibrary等讀寫excel。

⑹ VB 從SQL資料庫中把數據導出到Excel表格中,怎麼寫

SubdataToExcel()
DimconnAsString
DimrsAsNewADODB.Recordset
DimexcelAsObject
DimworkbookAsObject
DimsheetAsObject
Dimi&,j&
'SQL資料庫的連接字串
conn="Provider=SQLOLEDB.1;Datasource=伺服器地址;initialcatalog=資料庫名稱;UserId=資料庫登錄賬號;Password=資料庫登錄賬號"
'打開到sql的連接,讀取xxx表數據到rs
rs.Open"select*fromxxx",conn,adOpenKeyset,adLockReadOnly
'excel對象、工作簿、工作表
Setexcel=CreateObject("Excel.Application")
Setworkbook=excel.workbooks().Add()
Setsheet=workbook.sheets(1)
excel.Visible=True
'循環讀取rs並寫入到excel
Fori=1Tors.Fields.Count
j=1
rs.MoveFirst
DoWhileNotrs.EOF
sheet.cells(j,i)=rs.Fields(i-1).Value
rs.MoveNext
j=j+1
Loop
Next
rs.Close
Setrs=Nothing

EndSub

⑺ VB能實現把sql表導出成excel 再把excel導入sql嗎

在VB中,你用ODBC連接Excel,ODBC可以把Excel工作薄也當成一個 ADO 或 DAO 對象看待,讀寫這些數據同樣可以用 SQL語句,就跟操作資料庫沒兩樣,這樣就可以完成導入導出操作了嘛。
熟悉一下 ADO 或 DAO 的對象模型,了解一下如何用 RecordSet來操作數據,這樣在高級語言中操作Excel數據就非常方便了。

⑻ sql語句將資料庫表中的數據導出到excel,怎麼操作

INSERT INTO OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:/Temp.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...Sheet1$(A1,A2) VALUES (1,2)
--註:A1,A2,A3 為自己在Excel文檔中添加的列名,而不是Excel 默認的 A,B,C,D等
--把values值改成select即可

⑼ vb 執行sql語句得到的結果集怎樣輸出到excel單元格中

可以,在vb窗口建個datagrid,adodc,用adodc綁定你的資料庫,datagrid的DataSource選擇那個adodc,這樣就能把記錄集中的數據顯示在datagrid表格中,然後再把datagrid表格中的查詢結果導入到Excel中,把datagrid導入到Excel的代碼如下:

DimexAsObject

DimiAsInteger

DimjAsInteger

DimXlAppAsExcel.Application

DimxlBookAsExcel.Workbook

DimxlSheetAsExcel.Worksheet

SetXlApp=CreateObject("Excel.Application")

XlApp.Visible=True

SetxlBook=XlApp.Workbooks.Add

SetxlSheet=xlBook.Worksheets(1)

Fori=0ToDataGrid1.Columns.Count-1

Forj=0ToDataGrid1.ApproxCount-1

DataGrid1.Col=i

OnErrorResumeNext

DataGrid1.Row=j

xlSheet.Cells(j+1,i+1)=DataGrid1.Columns.Item(i).Text

Nextj

Nexti

上述代碼可以做進按鈕里,記得引用裡面添加Excel的dll

望採納