1

C# で Excel Manager を実行する必要があり、Gem Box Spreadsheet Free を使用することにしました

        var ef = new ExcelFile();
        ef = ExcelFile.Load(File_Lettura);
        ExcelWorksheet ws = ef.Worksheets.ActiveWorksheet;

        int riga = 13;
        string s = (ws.Cells["B6"]).ToString();
        string[] r = s.Split('-');
        int c = 0;

        while (ws.Cells["B"+riga.ToString()].Value != null)
        {

            if (ws.Cells["F"+riga.ToString()].Value.ToString() != "")
            {
                // add row
                dgwFile.Rows.Add();

                dgwFile.Rows[c].Cells[0].Value = r[0] + "-" + r[1] + "-" + ws.Cells["B"+riga.ToString()].Value.ToString();
                dgwFile.Rows[c].Cells[1].Value = ws.Cells["D" + riga.ToString()].Value.ToString() + ws.Cells["G" + riga.ToString()].Value.ToString() + ws.Cells["H" + riga.ToString()].Value.ToString() + ws.Cells["I" + riga.ToString()].Value.ToString();
                dgwFile.Rows[c].Cells[2].Value = ws.Cells["F" + riga.ToString()].Value.ToString();
                dgwFile.Rows[c].Cells[3].Value = "0";
                c++;
            }
            riga++;
        }

VSは、最初の「IF」でエラーのある問題を教えてくれます:

タイプ 'System.NullReferenceException' の未処理の例外が発生しました。

間違った行は最初の 3 行だと思います。:)

私もそれを試してみました

ExcelFile ef = ExcelFile.Load(File_Lettura);
ExcelWorksheet ws = ef.Worksheets.ActiveWorksheet;
4

1 に答える 1

0

最初の 3 行が問題だとは思いませんが、100% 確実にするには、例外がスローされる場所を正確に指定する必要があります。

それにもかかわらず、あなたが対象としている ExcelCell の 1 つが null であると推測します。だからこれを試してください:

while (ws.Cells["B"+riga.ToString()] != null &&
       ws.Cells["B"+riga.ToString()].Value != null)
{
    if (ws.Cells["F"+riga.ToString()] != null &&
        ws.Cells["F"+riga.ToString()].Value != null)
        {
于 2015-07-10T20:24:27.930 に答える