2010-03-09 2 views

ответ

7

Попробуйте следующие C# код:

Dim MyCommand As System.Data.OleDb.OleDbDataAdapter 
Dim MyConnection As System.Data.OleDb.OleDbConnection 
MyConnection = New System.Data.OleDb.OleDbConnection(_ 
"provider=Microsoft.Jet.OLEDB.4.0; " & _ 
"data source=" & ExcelFilePath & "; " & _ 
"Extended Properties=Excel 8.0") 

' Select the data from Sheet1 ([in-house$]) of the workbook. 
MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [in-house$]", MyConnection) 

DS = New System.Data.DataSet 
MyCommand.Fill(DS) 
Dt = DS.Tables(0) 
DataGrid1.DataSource = Dt 

Для конкретной ячейки попробовать это (он будет читать D6 клетки). Следует отметить, что он не использует соединение OLEDB, а имеет прямой доступ.

пространство имен требуется using Microsoft.Office.Core;

Добавить это путем добавления ссылки из COM в Microsoft Office Library 12.0 Object

Dim oApp As New Excel.Application 
Dim oWBa As Excel.Workbook = oApp.Workbooks.Open("c:\Test.XLS") 
Dim oWS As Excel.Worksheet = DirectCast(oWBa.Worksheets(1), 
Excel.Worksheet) 
oApp.Visible = False 

Dim oRng As Excel.Range 
oRng = oWS.Range("D6") 
MsgBox(oRng.Value) 
+0

Да это прочитать все первенствовать файл. Как я могу прочитать определенную ячейку (т. Е. Я имею в виду, как я могу прочитать A11 в листе Excel)? Ваш набор кода работает для чтения всего файла. Спасибо вам. – RedsDevils

+0

Что мне нужно для импорта, например Excel.Application? – RedsDevils

+0

Хорошо, я получил ссылку на COM. Спасибо, я попробую ваш код. – RedsDevils

0

является совместимый компонент электронной таблицы Excel для .NET, который вы можете использовать, чтобы получить формулу, значение, форматированный текст и т. д. любой ячейки. Вот простой пример:

using System; 
using SpreadsheetGear; 

namespace Program 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // Load a workbook from disk and get the first worksheet. 
      IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook(@"C:\tmp\HelloWorld.xlsx"); 
      IWorksheet worksheet = workbook.Worksheets[0]; 
      // Get a reference to cell A1 and write the formatted value to the console. 
      IRange a1 = worksheet.Cells["A1"]; 
      Console.WriteLine("A1={0}", a1.Text); 
      // Get a reference to B2 and write the formula/value/text to the console. 
      IRange b2 = worksheet.Cells[1, 1]; 
      Console.WriteLine("B2 Formula={0}, Value={1}, Text={2}", b2.Formula, b2.Value, b2.Text); 
     } 
    } 
} 

Вы можете увидеть живые образцы here или скачать бесплатную пробную версию here если вы хотите попробовать это самостоятельно.

Отказ от ответственности: У меня есть SpreadsheetGear ООО

0

попробовать это в C# код,

DimobjEXCELCon As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=EXCLE_FILE_PATH;Extended Properties=""Excel 12.0 Xml;HDR=Yes""") 
ExcelConnection.Open() 

Dim objQuery As String = "SELECT * FROM [Sheet1$]" 'get values from sheet1, here you can change your sheet name 

Dim objCMD As OleDbCommand = New OleDbCommand(objQuery,objEXCELCon) 
Dim objDR As OleDbDataReader 

Dim SQLconn As New SqlConnection() 
Dim szCON As String = "Connection string for database" 
SQLconn.ConnectionString = szCON 
SQLconn.Open() 


Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(SQLConn) 
bulkCopy.DestinationTableName = "TableToWriteToInSQLSERVER" 

Try 
    objDR = objCMD.ExecuteReader 
    bulCopy.WriteToServer(objDR) 
    objDR.Close() 
    SQLConn.Close() 

Catch ex As Exception 
    MsgBox(ex.ToString) 
End Try