我有一个带有sheet1的excel文件,它有一个我需要在第2行和第10列读取的值。 这是我的代码。
Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
Excel.Sheets excelSheets = excelWorkbook.Worksheets;
string currentSheet = "Sheet1";
Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelSheets.get_Item(currentSheet);
var cell = (Excel.Range)excelWorksheet.Cells[10, 2];
获取Excel.Range的单元格对象后,我不知道如何读取该单元格的内容。我尝试将其转换为数组并在其上循环,我尝试转换为字符串数组等。我确信它非常简单。有没有直接的方法来获得一个字符串的单元格值?
答案 0 :(得分:70)
您需要将其强制转换为字符串(而不是字符串数组),因为它是单个值。
var cellValue = (string)(excelWorksheet.Cells[10, 2] as Excel.Range).Value;
答案 1 :(得分:12)
using Microsoft.Office.Interop.Excel;
string path = "C:\\Projects\\ExcelSingleValue\\Test.xlsx ";
Application excel = new Application();
Workbook wb = excel.Workbooks.Open(path);
Worksheet excelSheet = wb.ActiveSheet;
//Read the first cell
string test = excelSheet.Cells[1, 1].Value.ToString();
wb.Close();
此示例使用“Microsoft Excel 15.0对象库”,但可能与早期版本的Interop和其他库兼容。
答案 2 :(得分:7)
//THIS IS WORKING CODE
Microsoft.Office.Interop.Excel.Range Range_Number,r2;
Range_Number = wsheet.UsedRange.Find("smth");
string f_number="";
r2 = wsheet.Cells;
int n_c = Range_Number.Column;
int n_r = Range_Number.Row;
var number = ((Range)r2[n_r + 1, n_c]).Value;
f_number = (string)number;
答案 3 :(得分:4)
最好使用.Value2()而不是.Value()。这更快,并在单元格中给出准确的值。对于某些类型的数据,当使用.Value()时,可以观察到截断。
答案 4 :(得分:2)
请试试这个。也许这可以帮到你。 它对我有用。
string sValue = (range.Cells[_row, _column] as Microsoft.Office.Interop.Excel.Range).Value2.ToString();
//_row,_column your column & row number
//eg: string sValue = (sheet.Cells[i + 9, 12] as Microsoft.Office.Interop.Excel.Range).Value2.ToString();
//sValue has your value
答案 5 :(得分:1)
在.Net
中读取单个Excel单元格的问题来自这样一个事实:空单元格被评估为Null
。因此,人们无法使用其.Value
或.Value2
属性,因为会出现错误。
要返回空字符串,当单元格为Null
时,可以通过以下方式使用Convert.ToString(Cell)
:
Excel.Workbook wkb = Open(excel, filePath);
Excel.Worksheet wk = (Excel.Worksheet)excel.Worksheets.get_Item(1);
for (int i = 1; i < 5; i++)
{
string a = Convert.ToString(wk.Cells[i, 1].Value2);
Console.WriteLine(a);
}
答案 6 :(得分:0)
这是一个解决方案,在您引用objWorksheet.UsedRange的情况下可能会更好。
shift + cntrl + a
答案 7 :(得分:0)
从 Excel Worksheet
读取单元格值时可能会遇到问题。如果单元格为空.Value
(或.Value2
)将抛出null
。如果要消除该问题,则需要检查结果是否为 null
。像这样:
string strcelltext = Convert.ToString(mySheet.get_Range("A1", "A1").Value2) ?? "";