检索Excel工作表单元格值

我正在使用c#读取excel表单的特定单元格的值。 但根据我的代码,我没有得到任何价值..

我的代码获取单元格值是:

foreach (DataRow dr in sourceds.Tables[0].Rows) { while (clmn < dr.ItemArray.Count()) { value = ((Microsoft.Office.Interop.Excel.Range)ws.Cells[row,clmn]).Text.ToString(); ws.Cells[row, clmn] = value; ws.Cells[row, clmn] = value; clmn++; } row++; } wb.Save(); 

在这里,我正在读取其他工作表的单元格,并希望将该值插入到其他工作表中。
但我没有得到任何“价值”的价值..

如果内容是文本, .Text参数将只有一个值。 一般来说你想要使用.Value.ToString()来代替。

你提到从另一张表中获得价值。 你在哪里设置表格? 你应该可以做一些像wb.Sheets[0].Cells[row,clmn].Value.ToString() (假设你想从第一张数据)。

看着这个代码,你正在逐一复制项目。 使用select/复制/粘贴function要容易得多:

 Range r1 = wb.Sheets[0].Cells["C1", "E5" ]; // define corners of selection square Range r2 = wb.Sheets[1].Cells["A1"]; // destination r1.Select(); r1.Copy(r2); 

你可以试试这个…

 MyCellValue = (((Microsoft.Office.Interop.Excel.Range)oWorkSheet.Cells[myRow, myCol]).Value2 != null ? ((Microsoft.Office.Interop.Excel.Range)oWorkSheet.Cells[myRow, myCol]).Value2.ToString().Trim() : ""); 

您检查值是否不为空,所以你没有得到一个例外。 myCelvariables可以是数字(表示列的数字)或string(表示列的名称,即“A”)。 myRowvariables是行的编号。

  1. 在您的应用程序中添加Microsoft.Office.Interop.Excel.dll
  2. 在你的方法中写下面的代码行或者使用这个方法:

      private void readExcel() { object _row = 1; object _column = 1; Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.ApplicationClass(); excelApp.Visible = false; excelApp.ScreenUpdating = false; excelApp.DisplayAlerts = false; Microsoft.Office.Interop.Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(@"D:\\Book1.xlsx", 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); Microsoft.Office.Interop.Excel.Sheets excelSheets = excelWorkbook.Worksheets; string currentSheet = "Sheet1"; Microsoft.Office.Interop.Excel.Worksheet excelWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)excelSheets.get_Item(currentSheet); Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)excelWorksheet.UsedRange; string sValue = (range.Cells[_row, _column] as Microsoft.Office.Interop.Excel.Range).Value2.ToString(); //sValue has your value }