从C#中的Excel范围读取所有单元格值

假设我有从E2到E16的范围。 如何读取E2到E16的值?

你可以试试这样的事情。 它应该工作

你可以在里面指定你的范围。

this.openFileDialog1.FileName = "*.xls"; if (this.openFileDialog1.ShowDialog() == DialogResult.OK) { Excel.Workbook theWorkbook = ExcelObj.Workbooks.Open( openFileDialog1.FileName, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true); Excel.Sheets sheets = theWorkbook.Worksheets; Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1); for (int i = 1; i <= 10; i++) { Excel.Range range = worksheet.get_Range("A"+i.ToString(), "J" + i.ToString()); System.Array myvalues = (System.Array)range.Cells.Value; string[] strArray = ConvertToStringArray(myvalues); } } string[] ConvertToStringArray(System.Array values) { // create a new string array string[] theArray = new string[values.Length]; // loop through the 2-D System.Array and populate the 1-D String Array for (int i = 1; i <= values.Length; i++) { if (values.GetValue(1, i) == null) theArray[i-1] = ""; else theArray[i-1] = (string)values.GetValue(1, i).ToString(); } return theArray; } 

另一种替代方法。 作为一个特殊的答案,因为它会减少混淆的空间。

 Excel.Application app = new Excel.Application(); Excel.Workbook wbook = null; Excel.Worksheet wsheet = null; Excel.Range range = null; app.Visible = false; Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); string filepath = inputFile1.Value.ToString(); if (filepath != "") { wbook = app.Workbooks.Open(filepath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); string currentSheet = "Sheet1"; wsheet = (Excel.Worksheet)wbook.Worksheets.get_Item(currentSheet); range = wsheet.get_Range("B6", "H20"); System.Array myvalues = (System.Array)range.Cells.Value2; valueArray = ConvertToStringArray(myvalues); if (app != null) { app.Workbooks.Close(); app.Quit(); } app = null; wsheet = null; range = null; string[] ConvertToStringArray(System.Array values) { // create a new string array string[] theArray = new string[values.Length]; // loop through the 2-D System.Array and populate the 1-D String Array for (int i = 1; i <= values.Length; i++) { if (values.GetValue(1, i) == null) theArray[i-1] = ""; else theArray[i-1] = (string)values.GetValue(1, i).ToString(); } return theArray; }