您好我有一个excel文件settings.xlsx。我想从这个文件中读取数据,并将我的代码中使用的变量与数据分配。
示例
Column1 Column2
Row1 Data 500
Row2 Address 30
Row3 Value FPGA
我的代码中数据,地址和值为变量。 有人可以用c#的伪代码协助我打开一个文件并按照我的要求从中读取内容吗? 我想搜索"数据" excel文件中的单词,取下包含" Data"的单元格旁边的值。并将其分配给变量"数据"。我知道这很令人困惑,但我真的希望最终数据看起来像下面的内容。
Data=500 //Finally I want my variables to have the data as follows
Address=30
Value= FPGA
我尝试在我的代码中打开一个文件。但由于我是c#的新手,我无法理解我的代码中出现了什么问题。 我被困在这一点上。打开功能会出错。请帮助我。我试图在我的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;
但是当我尝试将单元格值存储在我的变量中时,它会给我一个错误。我不知何故不能使用Cells.value。我尝试使用以下但无法存储数据。有人可以帮忙吗?
uint pbaudRate2 = Convert.ToUInt32(range.Value2.ToString());
答案 0 :(得分:0)
这是一个小型演示如何阅读一系列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;
}
将单元格值复制到2D对象数组中。进一步处理取决于值类型。
请注意,数组的传输比单个单元格复制操作的嵌套循环快得多。
答案 1 :(得分:0)
如果您可以对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];