我正在使用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();
这里我正在读取其他工作表中的单元格,并希望将该值插入其他工作表中 但我没有得到任何“价值”的价值。
答案 0 :(得分:1)
如果内容是文本,.Text
参数将只有一个值。通常,您希望使用.Value.ToString()
。
您提到从其他工作表中获取值。你在哪里设置表?您应该可以执行wb.Sheets[0].Cells[row,clmn].Value.ToString()
之类的操作(假设您需要第一张表中的数据)。
查看此代码,您将逐个单元格复制项目。使用选择/复制/粘贴功能更容易:
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);
答案 1 :(得分:1)
你可以试试这个......
MyCellValue = (((Microsoft.Office.Interop.Excel.Range)oWorkSheet.Cells[myRow, myCol]).Value2 != null ? ((Microsoft.Office.Interop.Excel.Range)oWorkSheet.Cells[myRow, myCol]).Value2.ToString().Trim() : "");
检查该值是否为空,这样就不会出现异常。 myCel变量可以是数字(表示列的数字)或字符串(表示列的名称,即“A”)。 myRow变量是行的编号。
答案 2 :(得分:0)
Microsoft.Office.Interop.Excel.dll
。在您的方法中编写以下代码行/或使用此方法:
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
}