如何从VB.Net读取Excel单元格

如何使用VB.NET与OLEDB连接读取Excel文件中的特定单元格?

你能告诉我示例代码吗?

尝试以下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连接,而是直接访问。

命名空间需要使用Microsoft.Office.Core;

通过添加从COM到Microsoft Office 12.0对象库的引用来添加它

 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) 

SpreadsheetGear for .NET是一个Excel兼容的电子表格组件,可以用来获取任何单元格的公式,值,格式化文本等。 这是一个简单的例子:

 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); } } } 

你可以在这里看到现场的样品,或者如果你想自己尝试下载免费试用。

免责声明:我自己的SpreadsheetGear LLC

试试这个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