1.) *** 좋습니다. 그래서 Excel 스프레드 시트에서 가져온 DataTable을 채 웁니다. DataTable을 살펴보고 각 행을 합치고 싶습니다. 레이블이 있기 때문에 첫번째 열 &을 건너 뛰어야합니다. 나는 테이블의 각 행에 도달하려고 노력하고 그것을 총 "행 총"열에 출력하려고합니다. "숫자가"변수를 할당하려고 시도 할 때 "잘못된 캐스트가 지정되었습니다. 각 셀을 시도하고 합계합니다. 값.DataTable의 행 합계 - 유효하지 않은 캐스팅?
예 :
행 (0) -------------------- ItemA ...... ItemB ....... ItemC .. ............ RowTotal
란 (1) 회사 A ..... 12 .......... 12 .......... ... 10 .................... 34
2.) 또한 아직 도달하지 못했습니다. 내 문제가 될 수 있습니다. 그것을 DataTable의 마지막 열로 출력하려고합니다.
: dr [dt.Columns.Count - 1] = Convert.ToInt32 (sum);
의견이나 제안이 있으십니까?
는 DataRow dr = dt.NewRow();
int sum = 0;
dt.Columns.Add("Row Totals", typeof(int));
for (int i = 0; i < dt.Columns.Count; i++)
{
if (dt.Columns[i].ColumnName == "Client")
{
dt.Columns.Cast<DataColumn>().Skip(1);
}
else
{
for (int j = 0; j < dt.Rows.Count - 1; j++)
{
dt.Rows.Cast<DataRow>().Skip(1);
int number =0;
number = (dt.Rows[j].Field<int>(i));
sum += number;
dr[dt.Columns.Count - 1] = Convert.ToInt32(sum);
Console.WriteLine("Row : {0} , Column : {1} , Value : {2}", i,j, dt.Rows[i][j].ToString());
Console.WriteLine(sum);
}
Console.ReadLine();
}
}
업데이트 : *는, 내가 노력하고있어 해결책이 * ** * ** * 그래서 **
입니다 ** 12/27/12 내가 알고있는 행과 열을 건너 뛰는 것은 텍스트입니다. 각 셀을 필터링하여 합계를 계산할 때 여전히 "지정된 캐스트가 유효하지 않습니다."라는 메시지가 나타납니다. 더 이상의 제안?
미리 감사드립니다.
DataRow dr = dt.NewRow();
int sum = 0;
int number = 0;
for (int i = 0; i < dt.Columns.Count-1; i++)
{
if (dt.Columns[i].ColumnName == "column1")
{
dt.Columns.Cast<DataColumn>().Skip(0);
}
if (dt.Columns[i].ColumnName == "column2")
{
dt.Columns.Cast<DataColumn>().Skip(1);
}
else
{
for (int j = 0; j < dt.Rows.Count; j++)
{
dt.Rows.Cast<DataRow>().Skip(0);
dt.Rows.Cast<DataRow>().Skip(1);
//if (number != -1 && number != 0)
//{
number = (dt.Rows[j].Field<int>(i));
sum += number;
dr[dt.Rows.Count] = Convert.ToInt32(sum);
//}
//else
//{
// number = 0;
//}
Console.WriteLine("Row : {0} , Column : {1} , Value : {2}", i, j, dt.Rows[i][j].ToString());
Console.WriteLine(sum);
}
Console.ReadLine();
dataGridView1.DataSource = dt;
}
*
for (int i = 0; i < dt.Columns.Count - 2; i++)
{
for (int j = 0; j < dt.Rows.Count - 1; j++)
{
string value = dt.Rows[i][j].ToString();
int num = 0;
bool res = int.TryParse(value, out num);
if (res == false)
{
num = 0;
}
else
{
int sum = 0;
sum += num;
DataRow dr;
dr["Totals"] = sum;
dt.Rows.Add(dr);
}
}
dataGridView1.DataSource = dt;
}
}
오, 내가 "IsNull"을 추가 할 수 있다고 생각하지 않았습니다 - 정확합니까? – scottO
@scottO null이 아닌 경우 합계를 수행하십시오. – JonH
체크를했습니다. '-1'은 IsNull을 int로 사용할 수 없다고 말했기 때문에 통과 중이고 18 번째 열을 찾지 못했습니다. – scottO