比如SQL2005 我有1个主表 很多子表
主表Ta中的‘TagName'列 中A1,A2.....A100 
子表 T1 有10个列名V1....V10 
子表 T2 也有10个列名V1....V10 
子表 T3 也有10个列名V1....V10 

子表 T10 有10个列名V1....V10 
主表Ta中的‘TagName'列 中A1...A10 对应 子表 T1 的10个列名V1....V10 
主表Ta中的‘TagName'列 中A11...A20 对应 子表 T1 的10个列名V1....V10
主表Ta中的‘TagName'列 中A21...A30 对应 子表 T1 的10个列名V1....V10 

主表Ta中的‘TagName'列 中A99...A100 对应 子表 T1 的10个列名V1....V10  我想 建立一个excel 报表模板 在sheet2配置主表Ta  而在sheet1 显示数值,请问 那位大大有这方面的思路
VB.NET +SQL2005

解决方案 »

  1.   

    1.通过配置excel 就能查询sql 2005?貌似做不到.
    2.如果是把数据导入到excel,则见下:
    SQL SERVER 和EXCEL的数据导入导出
    1、在SQL SERVER里查询Excel数据:
    -- ======================================================
    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
    下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
    SELECT * 
    FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
    -------------------------------------------------------------------------------------------------2、将Excel的数据导入SQL server :
    -- ======================================================
    SELECT * into newtable
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
    实例:
    SELECT * into newtable
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
    -------------------------------------------------------------------------------------------------3、将SQL SERVER中查询到的数据导成一个Excel文件
    -- ======================================================
    T-SQL代码:
    EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
    参数:S 是SQL服务器名;U是用户;P是密码
    说明:还可以导出文本文件等多种格式
    实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
    EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
    在VB6中应用ADO导出EXCEL文件代码: 
    Dim cn  As New ADODB.Connection
    cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
    cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
    ------------------------------------------------------------------------------------------------4、在SQL SERVER里往Excel插入数据:
    -- ======================================================
    insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)T-SQL代码:
    INSERT INTO  
    OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',  
    'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]  
    (bestand, produkt) VALUES (20, 'Test')  
      

  2.   

    应该行,可以用 VBA 通过查询 MSSQL 数据库,再写入 EXCEL 单元格.楼主到网上找找这方面的信息,应该不难.
    参考:
    EXCEL VBA 查数据库 MSSQL 获取数据的方法:
    http://wenku.baidu.com/view/19bfc2f34693daef5ef73d10.html
    获取数据后,就是一个记录集,用VBA处理记录集的方法与VB或VBSCRIPT的方法是一样的.处理后可以按你的要求写入相应的单元格.
    EXCEL VBA 操作单元格的例子:
    http://apps.hi.baidu.com/share/detail/6215550
      

  3.   

    应该可行,不过为何不考虑从sql server去读取及处理excel的数据呢?毕竟sql server比excel功能强大.
      

  4.   


    MarkExcel的报表工具很强大