现有这样一个问题需要解决:
想把数据库中的记录经过条件查询用Excel显示出来,要做出合适的排版。
高手们有什么办法吗?
最好可以从java中导出,经Excel导入。

解决方案 »

  1.   

    EXCEL 可以通过外部数据源来获取数据也可以使用SQL语句。
      

  2.   

    从VB中导出知道做法,但JAVA的就不知道了也可以将数据库中经过条件查询得到的数据先导入临时表中,再用存储过程直接导入EXCEL中,如:
    EXEC master..xp_cmdshell 'bcp TESTDB.dbo.tmp out C:\test.xls -c -q -S "(local)" -U "sa" -P ""'
      

  3.   

    其中TESTDB.dbo.tmp 改成需导出临时表的名称,C:\test.xls 改为导入到的文件-U "sa"改为登录服务器的用户名,-P ""改为登录密码该SQL语句可用创建好的Connection连接来运行
      

  4.   

    在Project-References中选中Microsoft Excel 10.0 Ojbect Library我写的一个例子:
    '********************************************************************************
    '*   功能  描述:将检索结果得到的临时表内容导出到Excel表格中(
    '*   参数  说明:
    '*         输入:None
    '*         输出:None
    '*   返回值说明:成功-1,失败-0
    '*   作      者:阿九
    '*   更      新:
    '*   创建  日期:2004/3/10
    '*   更新  日期:
    '********************************************************************************
    Public Function ExportToExcel() As Long
        Dim uExcel     As Excel.Application
        Dim uExcelBook As Excel.Workbook
        Dim adoCmm     As Command
        Dim adoRec     As Recordset
        Dim strSQL, strTemp   As String
        Dim intList, intI, intJ As Integer 'intRow 行,intList 列
        Dim intRow As Long
        
        On Error GoTo ErrorHandler
        
        Set adoCmm = GetCommand
        strSQL = "select count(*) as TotalCount from " & gTempTable '临时表存在的记录数
        adoCmm.CommandText = strSQL
        Set adoRec = adoCmm.Execute
        If Not adoRec.BOF And Not adoRec.EOF Then intRow = adoRec("TotalCount") '取得行数
        intList = 11 '列数固定为11列
        adoRec.Close
        strSQL = "select TestCode,PatCode,OpeUser from " & gTempTable & " order by TestCode"
        adoCmm.CommandText = strSQL
        Set adoRec = adoCmm.Execute
        If intRow > 0 Then
            Set uExcel = New Excel.Application
            uExcel.Visible = True
            uExcel.SheetsInNewWorkbook = 1
            Set uExcelBook = uExcel.Workbooks.Add '打开Excel
            '边框设置
            With uExcel.ActiveSheet.Range("A1:K" & (intRow + 1) & "").Borders
                .LineStyle = 1
                .Weight = xlThin
                .ColorIndex = 1
            End With
            '字体设置(第一行以粗体显示) 高度设为 20
            'With uExcel.ActiveSheet.Range("A1:K1").Font
                '.Size = 14
                '.Bold = True
                '.Italic = True
                '.ColorIndex = 3
            'End With
            uExcel.ActiveSheet.Rows.HorizontalAlignment = xlVAlignCenter     '水平居中
            uExcel.ActiveSheet.Rows.VerticalAlignment = xlVAlignCenter       '垂直居中
            '设置第一行标题
            With uExcel.ActiveSheet
                .Cells(1, 1).Value = "测试编号1"
                .Cells(1, 2).Value = "测试编号2"
                .Cells(1, 3).Value = "操作人员"
                '……
            End With
        End If
        '填充数据行
        intI = 2
        Do While Not adoRec.EOF
            With uExcel.ActiveSheet
                .Cells(intI, 1).Value = adoRec("TestCode")
                .Cells(intI, 2).Value = adoRec("PatCode")
                .Cells(intI, 3).Value = adoRec("OpeUser")
            End With
            intI = intI + 1
            adoRec.MoveNext
        Loop
        adoRec.Close
        
        'uExcel.ActiveSheet.PageSetup.Orientation = xlPortrait 'xlLandscape
        'uExcel.ActiveSheet.PageSetup.PaperSize = xlPaperA4 '适应于A4纸
        'uExcel.ActiveSheet.PrintOut'打印输出
        'uExcel.DisplayAlerts = False '不保存后退出
        'uExcel.Quit
        'uExcel.DisplayAlerts = True
        'uExcel.Quit
        Set uExcel = Nothing
        Set uExcelBook = Nothing
        ExportToExcel = 1
        Exit Function
    ErrorHandler:
        mvarErrorInfo = Err.Description
        ExportToExcel = 0
    End Function
      

  5.   

    你可以用java声称xml文件,然后用excel打开这个xml文件编辑。