如何判断一个int类型是否为空

时间:2022-08-23 17:00:17
如何判断一个int类型是否为null  不为null时则 = 0 
我现在这样的写法 报错 提示字符串格式不正确 因为我SQL语句中有NULL值
            int R5 = int.Parse(dr["5"].ToString());
            cells[i + 4, 8].PutValue(R5);

我想转换加个判断是否为null类似于这样的写法
string ActAttendPer = Act == 0 ? "0" : Convert.ToInt32(((1.000 * ActAttend) / (1.000 * Act) * 100)).ToString() + "%";
                cells[iRowIndex + iRow, 17].PutValue(ActAttendPer);


因为要将值传进EXCEL模板 所以值必须是int类型

求助 谢谢

8 个解决方案

#1


是为NULL是 则 = 0 写错了

#2


直接在sql语句中使用isnull函数把null转为0

#3


用int? 来接受转换后的值, 再判断这个int? 时候为null  最后赋值给一个int变量。

或者:

SQL语句中有NULL值
-》更改数据表中的这一列的默认值为:0    这样插入数据的时候就不会有Null值了。

#4


用可空值类型来接收更稳妥一些,也可以在SQL语句里面用ISNULL把空值转为0

#5


int R5 =dr["5"]==DBNull.Value?0: int.Parse(dr["5"].ToString());

#6


谢谢各位老师  我去试一下

#7


各位老师 又出现了一个新的问题
这是我的for循环
        for (int i = 0; i <  dtd5.Rows.Count; ++i)
        {
            DataRow  dr = dtd5.Rows[i];
            int  E1 = dr["21:15"] == DBNull.Value ? 0 : int.Parse(dr["21:15"].ToString());
            cells[i + 5, 4].PutValue(E1);
            int  E2 = dr["21:30"] == DBNull.Value ? 0 : int.Parse(dr["21:30"].ToString());
            cells[i + 5, 5].PutValue(E2);
            int E3 = dr["21:45"] == DBNull.Value ? 0 : int.Parse(dr["21:45"].ToString());
            cells[i + 5, 6].PutValue(E3);
            int E4 = dr["22:00"] == DBNull.Value ? 0 : int.Parse(dr["22:00"].ToString());
            cells[i + 5, 7].PutValue(E4);
            int E5 = dr["22:15"] == DBNull.Value ? 0 : int.Parse(dr["22:15"].ToString());
            cells[i + 5, 8].PutValue(E5);
            int E6 = dr["22:30"] == DBNull.Value ? 0 : int.Parse(dr["22:30"].ToString());
            cells[i + 5, 9].PutValue(E6);
            int E7 = dr["22:45"] == DBNull.Value ? 0 : int.Parse(dr["22:45"].ToString());
            cells[i + 5, 10].PutValue(E7);
            int E8 = dr["23:00"] == DBNull.Value ? 0 : int.Parse(dr["23:00"].ToString());
            cells[i + 5, 11].PutValue(E8);
            int E9 = dr["23:15"] == DBNull.Value ? 0 : int.Parse(dr["23:15"].ToString());
            cells[i + 5, 12].PutValue(E9);
            int E10 = dr["23:30"] == DBNull.Value ? 0 : int.Parse(dr["23:30"].ToString());
            cells[i + 5, 13].PutValue(E10);
            int E11 = dr["23:45"] == DBNull.Value ? 0 : int.Parse(dr["23:45"].ToString());
            cells[i + 5, 14].PutValue(E11);
        }

现在我是想通过aspose.cells的方法导出EXCEL 
这是我存放的模板 如何判断一个int类型是否为空
这是sql中的查询数据 如何判断一个int类型是否为空
导出的代码
protected void CreatExcel21to24(string filename)
    {
        Aspose.Cells.License lic = new Aspose.Cells.License();
        string AsposeLicPath = "C:\\Projects\\config\\AsposeLic\\Aspose.Cells.lic";
        lic.SetLicense(AsposeLicPath);
        string templatePath = "d:\\Electric\\21.15-24.xlsx";
        Aspose.Cells.Workbook book = new Aspose.Cells.Workbook(templatePath);
        Aspose.Cells.Worksheet sheet0 = book.Worksheets[0];
        BindReportD5(ref sheet0);
        book.Save(filename, Aspose.Cells.SaveFormat.Xlsx);
    }


执行的是时候会在“book.Save(filename, Aspose.Cells.SaveFormat.Xlsx);”报错 提示索引的阵列的界限之外
因为这是用电实时的统计,晚上9点之前数据导出EXCEL都不报错 求助



#8


是不是for循环那里有问题

#1


是为NULL是 则 = 0 写错了

#2


直接在sql语句中使用isnull函数把null转为0

#3


用int? 来接受转换后的值, 再判断这个int? 时候为null  最后赋值给一个int变量。

或者:

SQL语句中有NULL值
-》更改数据表中的这一列的默认值为:0    这样插入数据的时候就不会有Null值了。

#4


用可空值类型来接收更稳妥一些,也可以在SQL语句里面用ISNULL把空值转为0

#5


int R5 =dr["5"]==DBNull.Value?0: int.Parse(dr["5"].ToString());

#6


谢谢各位老师  我去试一下

#7


各位老师 又出现了一个新的问题
这是我的for循环
        for (int i = 0; i <  dtd5.Rows.Count; ++i)
        {
            DataRow  dr = dtd5.Rows[i];
            int  E1 = dr["21:15"] == DBNull.Value ? 0 : int.Parse(dr["21:15"].ToString());
            cells[i + 5, 4].PutValue(E1);
            int  E2 = dr["21:30"] == DBNull.Value ? 0 : int.Parse(dr["21:30"].ToString());
            cells[i + 5, 5].PutValue(E2);
            int E3 = dr["21:45"] == DBNull.Value ? 0 : int.Parse(dr["21:45"].ToString());
            cells[i + 5, 6].PutValue(E3);
            int E4 = dr["22:00"] == DBNull.Value ? 0 : int.Parse(dr["22:00"].ToString());
            cells[i + 5, 7].PutValue(E4);
            int E5 = dr["22:15"] == DBNull.Value ? 0 : int.Parse(dr["22:15"].ToString());
            cells[i + 5, 8].PutValue(E5);
            int E6 = dr["22:30"] == DBNull.Value ? 0 : int.Parse(dr["22:30"].ToString());
            cells[i + 5, 9].PutValue(E6);
            int E7 = dr["22:45"] == DBNull.Value ? 0 : int.Parse(dr["22:45"].ToString());
            cells[i + 5, 10].PutValue(E7);
            int E8 = dr["23:00"] == DBNull.Value ? 0 : int.Parse(dr["23:00"].ToString());
            cells[i + 5, 11].PutValue(E8);
            int E9 = dr["23:15"] == DBNull.Value ? 0 : int.Parse(dr["23:15"].ToString());
            cells[i + 5, 12].PutValue(E9);
            int E10 = dr["23:30"] == DBNull.Value ? 0 : int.Parse(dr["23:30"].ToString());
            cells[i + 5, 13].PutValue(E10);
            int E11 = dr["23:45"] == DBNull.Value ? 0 : int.Parse(dr["23:45"].ToString());
            cells[i + 5, 14].PutValue(E11);
        }

现在我是想通过aspose.cells的方法导出EXCEL 
这是我存放的模板 如何判断一个int类型是否为空
这是sql中的查询数据 如何判断一个int类型是否为空
导出的代码
protected void CreatExcel21to24(string filename)
    {
        Aspose.Cells.License lic = new Aspose.Cells.License();
        string AsposeLicPath = "C:\\Projects\\config\\AsposeLic\\Aspose.Cells.lic";
        lic.SetLicense(AsposeLicPath);
        string templatePath = "d:\\Electric\\21.15-24.xlsx";
        Aspose.Cells.Workbook book = new Aspose.Cells.Workbook(templatePath);
        Aspose.Cells.Worksheet sheet0 = book.Worksheets[0];
        BindReportD5(ref sheet0);
        book.Save(filename, Aspose.Cells.SaveFormat.Xlsx);
    }


执行的是时候会在“book.Save(filename, Aspose.Cells.SaveFormat.Xlsx);”报错 提示索引的阵列的界限之外
因为这是用电实时的统计,晚上9点之前数据导出EXCEL都不报错 求助



#8


是不是for循环那里有问题