Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I extract a string from an excel cell?

I know how to write to a cell, but how do I get an already existing string written inside a cell in an excel file into a string object so I can use it to generate data in other cells?

My code so far:

        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);

I can manipulate cell contents using something like:

xlws.Cells[1,1] = "foo";

But I'm having trouble doing the opposite, that is reading cell contents into a string in my program.

Any help would be appreciated.

like image 683
AJ_ Avatar asked Nov 29 '22 18:11

AJ_


2 Answers

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

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

like image 21
Neil Knight Avatar answered Dec 04 '22 09:12

Neil Knight


To avoid NullReferenceException, don't use .ToString() directly on types that can be null (object, dynamic, string, etc.). Here are few safer ways to convert object to string:

  • Convert.ToString(object) - returns String.Empty when object is null

  • object?.ToString() - VS 2015 Null-conditional Operator returns null if object is null

  • object?.ToString() ?? "" - C# null-coalescing operator ?? to return "" when object is null

  • object + "" - String.Concat to return "" when object is null

  • $"{object}" - VS 2015 string interpolation is transformed at compile time to invoke an equivalent String.Format("{0}", object) call, and returns "" when object is null

like image 67
Slai Avatar answered Dec 04 '22 09:12

Slai