web-dev-qa-db-ja.com

単一のExcelセル値を読み取る方法

2行10列目に読み取る必要がある値を持つsheet1のExcelファイルがあります。これが私のコードです。

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であるセルオブジェクトを取得した後、そのセルのコンテンツを読み取る方法がわかりません。それを配列に変換してループし、文字列配列などに変換しようとしました。非常に簡単だと確信しています。文字列であるセル値を1つだけ取得する直接的な方法はありますか?

45
DoodleKana

単一の値なので、文字列の配列ではなく文字列にキャストする必要があります。

var cellValue = (string)(excelWorksheet.Cells[10, 2] as Excel.Range).Value;
71
System Down
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および他のライブラリと互換性がある場合があります。

14
David Sopko
 //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;
7
MadPointer

.Value()の代わりに.Value2()を使用することをお勧めします。これは高速で、セル内の正確な値を提供します。特定のタイプのデータでは、.Value()を使用すると切り捨てが観察される場合があります。

4
Shilpa

これを試してください。たぶんこれはあなたを助けるかもしれません。わたしにはできる。

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
2
Udaayipp

.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);
}
1
Vityata