现在我用到了控件axSpreadsheet,我想在机器上浏览一个模板文件将其导入到winform中的axSpreadsheet控件中(包含模板文件的格式,标题,颜色,字体等)请问如何实现? 我有多个报表需要用到模板文件,我将其导入之后该何如去操作这个模板文件,将其用到需要模板的报表文件中,望不吝赐教!继昨天那个问题之后,我想问一问,webbrowser控件能否把excel表格嵌入其中?搜索资料都是这个说行,那个说不行,我自己测试一直没能将其嵌入到webbrowser控件中。

解决方案 »

  1.   

     
    kevin_cheung(相识非偶然) 谢谢你 呵呵
      

  2.   

    转换成DataTable 
    参考:
    m_DataTable = new DataTable();
                    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + aFileName + ";" +
                                        "Extended Properties=Excel 8.0;";
                    var conn = new OleDbConnection(strConn);
                    conn.Open();
                    string strExcel = "";
                    OleDbDataAdapter myCommand = null;
                    strExcel = "select * from [parts$]";
                    myCommand = new OleDbDataAdapter(strExcel, strConn);
                    myCommand.Fill(m_DataTable);
                    conn.Close();
      

  3.   

    这样把excel文件作为数据源,应该是不能得到模板设置的一些效果的吧,也就是说字体颜色,表格背景色什么的,我想要的效果其实就是复制一个过来放到控件axSpreadsheet中。
      

  4.   

    webbrowser 可以把excel 嵌入进去
      

  5.   

    嵌入EXCEL到  winform
    方法一:使用.NET的WebBrowser控件;
    方法二:使用微软提供的控件(DsoFramer);
    方法三:使用API
    Imports System.Runtime.InteropServices '使用该语句后可以使用 DllImport 来引用 Dll 内的函数
    Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Integer, ByVal nIndex As Integer) As Integer
        Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Integer, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer
        Public Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Integer, ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer
        Public Declare Function SetParent Lib "user32" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
        <DllImport("user32.dll")> Public Shared Function SendMessage(ByVal hwnd As Int32, ByVal wMsg As Int32, ByVal wParam As Int32, ByVal lParam As Int32) As Int32
        End Function
        Private Declare Function ShowWindow Lib "user32.dll " (ByVal hwnd As Int32, ByVal nCmdShow As Int32) As Int32
        Private Const WM_SYSCOMMAND As Int32 = &H112
        Private Const SC_MAXIMIZE As Int32 = &HF030
        Public Const SW_SHOW = 5
        Public Const GWL_STYLE = -16
        Public Const WS_BORDER = &H800000
        Private Const WS_DLGFRAME = &H400000
        Public Const SWP_NOMOVE = &H2S
        Public Const SWP_NOSIZE = &H1S
        Public Const SWP_NOZORDER = &H4S
        Public Const SWP_FRAMECHANGED = &H20S
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim Execl As New Microsoft.Office.Interop.Excel.Application '创建EXCEL实例
            Execl.Workbooks.Add() '添加工作簿
            Execl.Visible = True 'EXCEL窗口显示。注意必须显示。
            Execl.ScreenUpdating = False '关闭EXCEL荧屏更新
            Dim h As IntPtr = Execl.Hwnd '获得EXCEL句柄
            Dim lStyle As Int32 = GetWindowLong(h, GWL_STYLE)
            lStyle = lStyle And Not WS_BORDER
            SetWindowLong(h.ToInt32, GWL_STYLE, lStyle)
            SetParent(h, Me.Panel1.Handle) '设置EXCEL的父容器
            SetWindowPos(h, IntPtr.Zero, 0, 0, 0, 0, _
             SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER Or SWP_FRAMECHANGED)
            SendMessage(h, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
            ShowWindow(h, SW_SHOW)
            Execl.Visible = True
            Execl.ScreenUpdating = True
        End Sub