Как проверить тип содержимого входного (xls) файла в C #? - PullRequest
1 голос
/ 20 марта 2012

Мне нужно прочитать файл .xlsx в C #. Я делаю следующее. Но мой ряд может иметь строку или двойную.

Input Excel
Test file

1  v1  c1   -3.99

Код:

private void button1_Click(object sender, EventArgs e)
{
    Excel.Application xlApp;
    Excel.Workbook xlWorkBook;
    Excel.Worksheet xlWorkSheet;
    Excel.Range range;

    string str;
    int rCnt = 0;
    int cCnt = 0;

    xlApp = new Excel.ApplicationClass();
    xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

    range = xlWorkSheet.UsedRange;

    for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
    {
        for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
        {
            str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2 ;
            MessageBox.Show(str);
        }
    }

    xlWorkBook.Close(true, null, null);
    xlApp.Quit();
}

Теперь я получаю сообщение об ошибке в следующем утверждении: Как проверить, является ли объект строки двойным или строковым?

string str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2;

Ответы [ 2 ]

1 голос
/ 20 марта 2012
object value = x.Value2;

string str = value as string;
if (str != null) {
    // I am string
}

double? d = value as double?;
if (d != null) {
    // d.Value is double
}
0 голосов
/ 20 марта 2012

вы можете попытаться разобрать его в двойное число, если это не удастся, используйте строку:

if(!double.TryParse(input, out result))
    resultString = input.ToString();

, тогда вы можете проверить, если resultString.IsNullOrEmpty определит, используете ли вы двойной результат или строку resultString.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...