从c#中的Excel文件中读取数据

嗨,我有一个Excel文件settings.xlsx。 我想从这个文件中读取数据,并在数据中分配我的代码中使用的variables。

Column1 Column2 Row1 Data 500 Row2 Address 30 Row3 Value FPGA 

我的代码中有数据,地址作为variables 。 有人可以帮助我一个伪代码的C#打开一个文件,并根据我的要求从它读取的内容? 我想在excel文件中search“Data”字,并将包含“Data”的单元格旁边的值分配给variables“Data”。 我知道这是混乱,但我真的希望最终的数据看起来像下面的东西。

 Data=500 //Finally I want my variables to have the data as follows Address=30 Value= FPGA 

我试过在我的代码中打开一个文件。但因为我是新来的C#,我无法理解我的代码中出了什么问题。 我被困在这一点上。 打开function给出错误。 请帮助我。 我试图打开我的C#代码中的Excel文件。 但不知何故,它说开放函数重载方法不带一个参数。 如何打开和阅读文件?

 string Filepath = @Filename; Excel.Application excelapp = new Excel.Application(); excelapp.Visible = true; var MyBook = excelapp.Workbooks.Open(Filepath); 

如果somone给出相同的伪代码,这将是非常有帮助的。

嗨,我能打开文件。

 string Filepath = Path.Combine(Directory.GetCurrentDirectory(), Filename); Excel.Application excelapp = new Excel.Application(); excelapp.Visible = true; var Workbook = excelapp.Workbooks.Open(Filepath, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0,true,1, 0); 

var xlWorkSheet =(Excel.Worksheet)Workbook.Worksheets.get_Item(2); Excel.Range range = xlWorkSheet.UsedRange;

但是,当我尝试将单元格值存储在我的variables中时,它给了我一个错误。 我以某种方式不能使用Cells.value。 我尝试使用以下,但无法存储数据。 任何人都可以帮忙吗?

uint pbaudRate2 = Convert.ToUInt32(range.Value2.ToString());

为什么cells.value不来我?

这里是一个小的演示如何读取一系列的Excel单元格

  // cf. http://support.microsoft.com/kb/302084/en-us Excel.Application XL = new Microsoft.Office.Interop.Excel.Application(); Excel._Workbook WB = XL.Workbooks.Open(fileName, ReadOnly: true); Excel._Worksheet WS = (Excel._Worksheet)WB.Sheets[sheetName]; Excel.Range R = WS.get_Range(GetAddress(row1, col1), GetAddress(row2, col2)); object[,] arr = (object[,])R.Value; .... private string GetAddress(int rowNumber, int columnNumber) { int dividend = columnNumber; string columnName = String.Empty; int modulo; while (dividend > 0) { modulo = (dividend - 1) % 26; columnName = Convert.ToChar(65 + modulo).ToString() + columnName; dividend = (int)((dividend - modulo) / 26); } return columnName + rowNumber; } 

单元格值被复制到对象的二维数组中。 进一步处理取决于值types。

请注意,数组的传输比单个单元复制操作的嵌套循环要快得多。

如果你可以在你的excel文件中稍作改动,那么读取数据的方法就简单多了。 您需要在第一行中具有列名(任何名称都会执行,例如“ColumnName”,“ColumnValue”)以及后续行中的数据。 那么你可以使用这样的代码:

 string xlConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=yourfullfilepathandname.xlsx;Extended Properties='Excel 8.0;HDR=Yes;';"; var xlConn = new OleDbConnection(xlConnStr); var da = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", xlConn); var xlDT = new DataTable(); da.Fill(xlDT); 

您现在将能够访问DataTable中的值。 在你的情况下:xlDT.Rows [1] [1]将保存地址的值(在本例中为30)。 有一件事要注意:Excel电子表格中的数字需要被检索为双打,然后如果你想要别的东西,

 int myAddress = (int)(double)xlDT.Rows[1][1];