本人需要读取多个Excel文档,每个Excel文件只有一个Sheet页,将每个文件的内容分别导入SQL Server数据库的不同表中。
是否可以一行一行的读取Excel文件里面的内容,然后在一个字段一个字段的访问,拼成INSERT语句,使用循环的方式遍历所有的行,每遍历一行就执行一遍的INSERT语句,向数据库中写数据呢?

解决方案 »

  1.   

    Excel文件可以作为数据库,用ado读取,方法跟读access数据库一样
      

  2.   

    可以实现的。
    首先添加引用 把microsoft.execl添加到工程中
    然后
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    xlApp = CreateObject("Excel.Application") 
    xlApp.Visible = False '设置EXCEL对象可见(或不可见)
                   
    xlBook = xlApp.Workbooks.Open(FileName)  'FileName为文件名xlSheet = xlBook.Worksheets(1)  '得到Sheet1页
    '读出数据
    s1 = xlSheet.Cells(1, 1).Value '第一行,第一列 
      

  3.   

    /// <summary>
    /// 将指定Excel文件中的数据转换成DataTable对象,供应用程序进一步处理
    /// </summary>
    /// <param name="filePath"></param>
    /// <returns></returns>
    public static System.Data.DataTable Import(string filePath,string sheetName)
    {
    System.Data.DataTable rs = new System.Data.DataTable();
    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
    "Data Source=" + filePath + ";" +
    "Extended Properties=\"Excel 8.0;\"");


    try//如果数据连接可以打开则尝试读入数据
    {

    OleDbCommand myOleDbCommand = new OleDbCommand("SELECT * FROM ["+sheetName+"$]",conn);
    OleDbDataAdapter myData = new OleDbDataAdapter(myOleDbCommand);
    myData.Fill(rs);
    conn.Close();

    }
    return rs;
    }
      

  4.   

    /// <summary>
    /// 将指定Excel文件中的数据转换成DataTable对象,供应用程序进一步处理
    /// </summary>
    /// <param name="filePath"></param>
    /// <returns></returns>
    public static System.Data.DataTable Import(string filePath,string sheetName)
    {
    System.Data.DataTable rs = new System.Data.DataTable();
    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
    "Data Source=" + filePath + ";" +
    "Extended Properties=\"Excel 8.0;\"");


    try
    {

    OleDbCommand myOleDbCommand = new OleDbCommand("SELECT * FROM ["+sheetName+"$]",conn);
    OleDbDataAdapter myData = new OleDbDataAdapter(myOleDbCommand);
    myData.Fill(rs);

    }
             catch{}
             finally
             {
                 conn.Close();
             } 
                                       
    return rs;
    }
      

  5.   

    刚才写错了
    不是  首先添加引用 把microsoft.execl添加到工程中
    添加引用,选择com,添加microsoft excel 9.0 object library
      

  6.   

    如果用 Eddie005(暴走005) 的方法就是
    Dim 行数 As Integer = rs.Rows.Count()如果用我的,就要自己判断了
      

  7.   

    可以把excel當作數據庫來讀取
    Dim inserbyexcel As String
                    inserbyexcel = "insert into " & tbname & "(EntId,FacId,PartNum,Revision,Layer,SerialNum," _
                        & " txtName,HOleL,Hole,HoleLeng,HoleUpp,HoleLow,HoleN,Radix,Notes,PTH,LDHole,LianKong," _
                        & " TsoDow,TwoHole,SmaHole) select * FROM OPENROWSET(" _
                        & "'Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=c:\acme\temp\" & fileName & "'," _
                        & "'select * from [" & exceltb & "$]')"
      

  8.   

    不過,這種直接導入的方法有一個前提就是那個excel文件必須和sql server服務器在同一台機子上。
      

  9.   

    導入的sql語句為:
    insert into 表名(要導入的字段1,2,3) select (要導入的字段1,2,3) from openrowset("Microsoft.Jet.OLEDB.4.0","excel 8.0;Database=excel路徑","select * from [excel1&])