【问题标题】:How can I extract a string from an excel cell?如何从excel单元格中提取字符串?
【发布时间】:2011-08-04 12:09:07
【问题描述】:

我知道如何写入单元格,但是如何将已写入 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";

但是我在做相反的事情时遇到了麻烦,即在我的程序中将单元格内容读入字符串。

任何帮助将不胜感激。

【问题讨论】:

    标签: c# string excel cell


    【解决方案1】:

    为避免NullReferenceException,请不要将.ToString() 直接用于可以为空的类型(objectdynamicstring 等)。以下是将对象转换为字符串的一些更安全的方法:

    【讨论】:

    • 这样的帖子让我想念 SO 文档。这将是一个完美的入口。谢谢!
    【解决方案2】:

    string myString = xlws.Cells[1, 1].Value as string;

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

    【讨论】:

    • 我给了 Slai 一个赞成票,因为他在处理字符串时是对的,你应该使用 Convert.ToString(object) 而不是 ToString()。刚刚在我的项目中切换它修复了我的空引用。
    【解决方案3】:

    xlws.Cells[1, 1].Value 具有 object 类型。所以你应该指出类型 例如:

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

    【讨论】:

      【解决方案4】:

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

      Range range = xlws.get_range("A1", "A1");
      object[] data = range.get_Value(XlRangeValueDataType.xlRangeValueDefault);
      string str = (string)data[0];
      

      还有一篇很好的文章解释了其他方法,here

      希望对您有所帮助。

      【讨论】:

        【解决方案5】:

        string val = sheet.Cells[1, 6].Text;

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

        【讨论】:

          【解决方案6】:
          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);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-12-02
            • 2019-04-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-07-15
            相关资源
            最近更新 更多