Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从excel单元格中提取字符串?_C#_String_Excel_Cell - Fatal编程技术网

C# 如何从excel单元格中提取字符串?

C# 如何从excel单元格中提取字符串?,c#,string,excel,cell,C#,String,Excel,Cell,我知道如何写入单元格,但如何将excel文件中单元格内已存在的字符串写入字符串对象,以便使用它在其他单元格中生成数据 到目前为止,我的代码是: Excel.ApplicationClass excelApp = new Excel.ApplicationClass(); excelApp.Visible = true; Excel.Workbook excelWorkbook = excelApp.Workbooks.Open("C:\\Use

我知道如何写入单元格,但如何将excel文件中单元格内已存在的字符串写入字符串对象,以便使用它在其他单元格中生成数据

到目前为止,我的代码是:

        Excel.ApplicationClass excelApp = new Excel.ApplicationClass();

        excelApp.Visible = true;

        Excel.Workbook excelWorkbook = excelApp.Workbooks.Open("C:\\Users\\user\\Desktop\\list.xls", 0, false, 5, "", "",
        false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);

        Excel.Sheets excelSheets = excelWorkbook.Worksheets;

        string currentSheet = "Sheet1";
        Excel.Worksheet xlws = (Excel.Worksheet)excelSheets.get_Item(currentSheet);
我可以使用以下方法操作单元格内容:

xlws.Cells[1,1]=“foo”

但我在做相反的事情时遇到了困难,那就是在我的程序中将单元格内容读入字符串

任何帮助都将不胜感激。

字符串myString=xlws.Cells[1,1]。值为字符串


string myString=((Excel.Range)sheet.Cells[1,1]).Value2.ToString()

xlws.Cells[1,1]。值的类型为对象。所以你应该指出类型 例如:

xlws.Cells[1,1].Value.ToString();

有几种方法可以从excel文档中获取值,但我认为您正在寻找的方法是:

Range range = xlws.get_range("A1", "A1");
object[] data = range.get_Value(XlRangeValueDataType.xlRangeValueDefault);
string str = (string)data[0];
一篇很好的文章也解释了其他方法


希望有帮助。

为了避免
空引用异常
,不要直接在可以为空的类型上使用
.ToString()
对象
动态
字符串
,等等)。以下是将对象转换为字符串的几种更安全的方法:

I can suggest one more way is (If you need to read string from row 3 column "I":
    Excel.Application objExcel = new Excel.Application();
    objExcel.Visible = true;
    Excel.Workbook objBook = o     objExcel.Workbooks.Open("C:\\myexcel.xlsx");
    Excel.Worksheet objsheet =  objBook.Worksheets["Sheet1"];
    string a = Convert.ToString(objsheet.Cells.get_Item(3,"I").Value);
  • Convert.ToString(对象)
    -当对象为空时返回

  • object?.ToString()
    -VS 2015如果对象为null,则返回null

  • object?.ToString()??“
    -在对象为空时返回

  • object+”
    -String.Concat在对象为空时返回

  • $“{object}”
    -VS 2015是调用一个等价的
    String.Format(“{0}”,object)
    调用,并在对象为null时返回


  • 字符串val=sheet.Cells[1,6]。文本

    这是从单元格中获取文本的最佳方法。
    我可以得到相同的文本而不做任何更改。

    我给了Slai一票,因为他在处理字符串时是正确的,你应该使用
    Convert.ToString(object)
    而不是
    ToString()
    。在我的项目中切换这个选项修复了我的空引用。这样的帖子让我错过了SO文档。这将是一个完美的入口。谢谢