用下面这段代码,根据自己实际修改一下就好
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
望采纳