我现在这样的写法 报错 提示字符串格式不正确 因为我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值了。
或者:
SQL语句中有NULL值
-》更改数据表中的这一列的默认值为:0 这样插入数据的时候就不会有Null值了。
#4
用可空值类型来接收更稳妥一些,也可以在SQL语句里面用ISNULL把空值转为0
#5
int R5 =dr["5"]==DBNull.Value?0: int.Parse(dr["5"].ToString());
#6
谢谢各位老师 我去试一下
#7
各位老师 又出现了一个新的问题
这是我的for循环
现在我是想通过aspose.cells的方法导出EXCEL
这是我存放的模板
这是sql中的查询数据
导出的代码
执行的是时候会在“book.Save(filename, Aspose.Cells.SaveFormat.Xlsx);”报错 提示索引的阵列的界限之外
因为这是用电实时的统计,晚上9点之前数据导出EXCEL都不报错 求助
这是我的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
这是我存放的模板
这是sql中的查询数据
导出的代码
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值了。
或者:
SQL语句中有NULL值
-》更改数据表中的这一列的默认值为:0 这样插入数据的时候就不会有Null值了。
#4
用可空值类型来接收更稳妥一些,也可以在SQL语句里面用ISNULL把空值转为0
#5
int R5 =dr["5"]==DBNull.Value?0: int.Parse(dr["5"].ToString());
#6
谢谢各位老师 我去试一下
#7
各位老师 又出现了一个新的问题
这是我的for循环
现在我是想通过aspose.cells的方法导出EXCEL
这是我存放的模板
这是sql中的查询数据
导出的代码
执行的是时候会在“book.Save(filename, Aspose.Cells.SaveFormat.Xlsx);”报错 提示索引的阵列的界限之外
因为这是用电实时的统计,晚上9点之前数据导出EXCEL都不报错 求助
这是我的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
这是我存放的模板
这是sql中的查询数据
导出的代码
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循环那里有问题