我正在为 SAP Business One 创建一个附加程序,该程序从 Excel 工作表中读取数据,然后将数据加载到矩阵中。Excel 工作表将始终具有相同的列。但是,某些列可能根本没有填充,或者某些单元格可能是空的。在我的测试 Excel 表中,“DocEntry”列是空的。我收到错误“输入字符串的格式不正确”
oDT.SetValue("hDocEntry", i, int.Parse(dt.Rows[i]["DocEntry"].ToString()));
System.Data.DataTable dt = new System.Data.DataTable();
OleDbCommand cmd = new OleDbCommand(sql, myConnection);
cmd.CommandType = CommandType.Text;
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
adapter.Fill(dt);
if (dt != null)
{
if (_form.DataSources.DataTables.Count.Equals(0))
{
_form.DataSources.DataTables.Add("dtData");
}
else
{
_form.DataSources.DataTables.Item("dtData").Clear();
}
oDT = _form.DataSources.DataTables.Item("dtData");
// Get matrix
_aphMatrix.Clear();
oDT.Columns.Add("hNum", SAPbouiCOM.BoFieldsType.ft_Integer, 10);
oDT.Columns.Add("hRecordKey", SAPbouiCOM.BoFieldsType.ft_Integer, 10);
oDT.Columns.Add("hDocEntry", SAPbouiCOM.BoFieldsType.ft_Integer, 10);
oDT.Columns.Add("hCardCode", SAPbouiCOM.BoFieldsType.ft_AlphaNumeric, 10);
oDT.Columns.Add("hComments", SAPbouiCOM.BoFieldsType.ft_AlphaNumeric, 20);
oDT.Columns.Add("hDocCurr", SAPbouiCOM.BoFieldsType.ft_AlphaNumeric, 4);
oDT.Columns.Add("hDocDate", SAPbouiCOM.BoFieldsType.ft_Date);
//Create SAP datatables rows
oDT.Rows.Add(dt.Rows.Count);
_form.Freeze(true);
// Iterate through the datatable rows
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
oDT.SetValue("hNum", i, i + 1);
oDT.SetValue("hRecordKey", i, int.Parse(dt.Rows[i]["RecordKey"].ToString()));
oDT.SetValue("hDocEntry", i, int.Parse(dt.Rows[i]["DocEntry"].ToString()));
oDT.SetValue("hCardCode", i, dt.Rows[i]["CardCode"].ToString());
oDT.SetValue("hComments", i, dt.Rows[i]["Comments"].ToString());
oDT.SetValue("hDocCurr", i, dt.Rows[i]["DocCurrency"].ToString());
oDT.SetValue("hDocDate", i, dt.Rows[i]["DocDate"]);
}
// Bind the data to the matrix columns
_aphMatrix.Columns.Item("hNum").DataBind.Bind("dtData", "hNum");
_aphMatrix.Columns.Item("hRecordKey").DataBind.Bind("dtData", "hRecordKey");
_aphMatrix.Columns.Item("hDocEntry").DataBind.Bind("dtData", "hDocEntry");
_aphMatrix.Columns.Item("hCardCode").DataBind.Bind("dtData", "hCardCode");
_aphMatrix.Columns.Item("hComments").DataBind.Bind("dtData", "hComments");
_aphMatrix.Columns.Item("hDocCurr").DataBind.Bind("dtData", "hDocCurr");
_aphMatrix.Columns.Item("hDocDate").DataBind.Bind("dtData", "hDocDate");
_aphMatrix.AutoResizeColumns();
_aphMatrix.LoadFromDataSource();
// Close the OLEdb connection
if (myConnection != null)
{
myConnection.Close();
myConnection.Dispose();
}
// Clear the datatable
oDT.Clear();
_form.Freeze(false);
}
因为空值。
如何过滤 dt 数据表,以便没有空值被带到 oDT?即字符串的空值设置为 string.Empty,整数/小数设置为零;任何帮助表示赞赏。