[初学者求教]救命啊 我实在不会了 急!!!!!

OROCHIORI561 2010-04-02 12:37:35

for (int row = 0; row <= dataGridView_reportResult.RowCount - 1; row++)
{
try
{
rowNumberString = Convert.ToString(row + headContentCount + 2);

objExcel.Cells[row + headContentCount + 2, 1] = dataGridView_reportResult.Rows[row].Cells[1].Value.ToString().Trim(); //DateOnly

objExcel.Cells[row + headContentCount + 2, 5] = dataGridView_reportResult.Rows[row].Cells[2].Value.ToString().Trim(); //TimeOnly

objExcel.Cells[row + headContentCount + 2, 6] = dataGridView_reportResult.Rows[row].Cells[3].Value.ToString().Trim(); //Location

objExcel.Cells[row + headContentCount + 2, 8] = dataGridView_reportResult.Rows[row].Cells[4].Value.ToString().Trim(); //PPDC

}
}

插入颜色的代码是

objWorkSheet.get_Range("A" + Convert.ToString(row + headContentCount + 2), "A" + 1).Interior.Color = 255;
代表第Convert.ToString(row + headContentCount + 2)行第一列的颜色是红色


我的目的是 两种颜色交替行显示(比如奇数行显示红色 偶数行白色)

我怎么试都不行,明早就得交工的 希望高手指点下
万分感激!!!!!!!!!
...全文
152 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
OROCHIORI561 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sandy945 的回复:]
设置成列了?

那你看下 设置

objWorkSheet.get_Range("A2", "A1").Interior.Color = 255;

是第二行第一列变红了

还是第一行 第二列变红了
[/Quote]
第一行第一列和第二行第一列全红了
Taiyangchen 2010-04-02
  • 打赏
  • 举报
回复
UP!!!!!!!!!!!!!!!!!!!!!!!!!!1
阿非 2010-04-02
  • 打赏
  • 举报
回复
设置成列了?

那你看下 设置

objWorkSheet.get_Range("A2", "A1").Interior.Color = 255;

是第二行第一列变红了

还是第一行 第二列变红了
OROCHIORI561 2010-04-02
  • 打赏
  • 举报
回复
我把领导给我的gridview循环的这部分代码原封不动贴出来 我的目的就是想让他一行交替着一行的显示两种颜色

//write data to EXCEL step by step
for (int row = 0; row <= dataGridView_reportResult.RowCount - 1; row++)
{
progressBar_export.PerformStep();
displayColumnCount = 1;


try
{
rowNumberString = Convert.ToString(row + headContentCount + 2);

objWorkSheet.get_Range("A" + rowNumberString, "D" + rowNumberString).Merge(true);
objWorkSheet.get_Range("F" + rowNumberString, "G" + rowNumberString).Merge(true);
objWorkSheet.get_Range("I" + rowNumberString, "K" + rowNumberString).Merge(true);
objWorkSheet.get_Range("L" + rowNumberString, "N" + rowNumberString).Merge(true);
objWorkSheet.get_Range("R" + rowNumberString, "S" + rowNumberString).Merge(true);

objExcel.Cells[row + headContentCount + 2, 1] = dataGridView_reportResult.Rows[row].Cells[1].Value.ToString().Trim(); //DateOnly
objExcel.Cells[row + headContentCount + 2, 5] = dataGridView_reportResult.Rows[row].Cells[2].Value.ToString().Trim(); //TimeOnly
objExcel.Cells[row + headContentCount + 2, 6] = dataGridView_reportResult.Rows[row].Cells[3].Value.ToString().Trim(); //Location
objExcel.Cells[row + headContentCount + 2, 8] = dataGridView_reportResult.Rows[row].Cells[4].Value.ToString().Trim(); //PPDC
objExcel.Cells[row + headContentCount + 2, 9] = dataGridView_reportResult.Rows[row].Cells[5].Value.ToString().Trim(); //PDUorRDU
objExcel.Cells[row + headContentCount + 2, 12] = dataGridView_reportResult.Rows[row].Cells[6].Value.ToString().Trim(); //RackNo
objExcel.Cells[row + headContentCount + 2, 15] = dataGridView_reportResult.Rows[row].Cells[7].Value.ToString().Trim(); //A_Root
objExcel.Cells[row + headContentCount + 2, 16] = dataGridView_reportResult.Rows[row].Cells[8].Value.ToString().Trim(); //B_Root
objExcel.Cells[row + headContentCount + 2, 17] = dataGridView_reportResult.Rows[row].Cells[9].Value.ToString().Trim(); //Total
objExcel.Cells[row + headContentCount + 2, 18] = dataGridView_reportResult.Rows[row].Cells[10].Value.ToString().Trim(); //Phases1
objExcel.Cells[row + headContentCount + 2, 20] = dataGridView_reportResult.Rows[row].Cells[11].Value.ToString().Trim(); //Phases2
objExcel.Cells[row + headContentCount + 2, 21] = dataGridView_reportResult.Rows[row].Cells[12].Value.ToString().Trim(); //StatusA
objExcel.Cells[row + headContentCount + 2, 22] = dataGridView_reportResult.Rows[row].Cells[13].Value.ToString().Trim(); //StatusB
objExcel.Cells[row + headContentCount + 2, 23] = dataGridView_reportResult.Rows[row].Cells[14].Value.ToString().Trim(); //Latitude
objExcel.Cells[row + headContentCount + 2, 24] = dataGridView_reportResult.Rows[row].Cells[15].Value.ToString().Trim(); //Usage
objExcel.Cells[row + headContentCount + 2, 25] = dataGridView_reportResult.Rows[row].Cells[16].Value.ToString().Trim(); //Agent
objExcel.Cells[row + headContentCount + 2, 26] = dataGridView_reportResult.Rows[row].Cells[17].Value.ToString().Trim(); //Power
objExcel.Cells[row + headContentCount + 2, 27] = dataGridView_reportResult.Rows[row].Cells[18].Value.ToString().Trim(); //Type

objWorkSheet.get_Range("A" + rowNumberString, "AA" + rowNumberString).Borders.LineStyle = 1;
objWorkSheet.get_Range("A" + rowNumberString, "AA" + rowNumberString).Font.Size = 10;
objWorkSheet.get_Range("A" + rowNumberString, "AA" + rowNumberString).RowHeight = 12.75;
}
catch (Exception ex)
{

}
}



OROCHIORI561 2010-04-02
  • 打赏
  • 举报
回复
我就想让他一行白(不去设置) 一行红 交替着来 但是怎么搞都搞不明白
OROCHIORI561 2010-04-02
  • 打赏
  • 举报
回复


if (row % 2 == 1)
{
objExcel.Cells[row + headContentCount + 2, 1] = dataGridView_reportResult.Rows[row].Cells[1].Value.ToString().Trim(); //DateOnly
objWorkSheet.get_Range("A" + Convert.ToString(row + headContentCount + 2), "A" + 1).Interior.Color = 255;
objExcel.Cells[row + headContentCount + 2, 5] = dataGridView_reportResult.Rows[row].Cells[2].Value.ToString().Trim(); //TimeOnly
objWorkSheet.get_Range("F" + Convert.ToString(row + headContentCount + 5), "F" + 5).Interior.Color = 255;
objExcel.Cells[row + headContentCount + 2, 6] = dataGridView_reportResult.Rows[row].Cells[3].Value.ToString().Trim(); //Location
objWorkSheet.get_Range("I" + Convert.ToString(row + headContentCount + 6), "I" + 6).Interior.Color = 255;
objExcel.Cells[row + headContentCount + 2, 8] = dataGridView_reportResult.Rows[row].Cells[4].Value.ToString().Trim(); //PPDC
objWorkSheet.get_Range("L" + Convert.ToString(row + headContentCount + 8), "L" + 8).Interior.Color = 255;
}

else
{
}

我这样写的 没出现我想要的效果 倒是一列一列的隔着红了 不是一行隔着一行的
阿非 2010-04-02
  • 打赏
  • 举报
回复
什么问题
OROCHIORI561 2010-04-02
  • 打赏
  • 举报
回复
objExcel是objExcel = new Microsoft.Office.Interop.Excel.Application();对象
objWorkSheet是Microsoft.Office.Interop.Excel.Worksheet对象
OROCHIORI 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sandy945 的回复:]
开execl 看了一下

应该是

objWorkSheet.get_Range("A1", "Z1").Interior.Color = 255;

objWorkSheet.get_Range("A3", "Z3").Interior.Color = 255;

objWorkSheet.get_Range("A5", "Z5").Interior.Color = 255;
……
[/Quote]
啥也不说了 都是眼泪了!!!!
阿非 2010-04-02
  • 打赏
  • 举报
回复
这里用 Z 是 表示最后一列
阿非 2010-04-02
  • 打赏
  • 举报
回复
A-Z 是表示列

数字是表示行
阿非 2010-04-02
  • 打赏
  • 举报
回复
开execl 看了一下

应该是

objWorkSheet.get_Range("A1", "Z1").Interior.Color = 255;

objWorkSheet.get_Range("A3", "Z3").Interior.Color = 255;

objWorkSheet.get_Range("A5", "Z5").Interior.Color = 255;

这样

OROCHIORI 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sandy945 的回复:]
你应该写成

objWorkSheet.get_Range("A1", 这个位置是列的总数).Interior.Color = 255;

假如 excel 有 5列 就是


objWorkSheet.get_Range("A1", "A5").Interior.Color = 255;

10列就是

objWorkSheet.get_Range("A1", "A10"……
[/Quote]
我试下!!!!!
阿非 2010-04-02
  • 打赏
  • 举报
回复
你应该写成

objWorkSheet.get_Range("A1", 这个位置是列的总数).Interior.Color = 255;

假如 excel 有 5列 就是


objWorkSheet.get_Range("A1", "A5").Interior.Color = 255;

10列就是

objWorkSheet.get_Range("A1", "A10").Interior.Color = 255;

然后隔行换色是

objWorkSheet.get_Range("C1", "C5").Interior.Color = 255;

objWorkSheet.get_Range("E1", "E5").Interior.Color = 255;


OROCHIORI561 2010-04-02
  • 打赏
  • 举报
回复

objWorkSheet.get_Range("A1", "A1").Interior.Color = 255;
objWorkSheet.get_Range("B1", "B1").Interior.Color = 255;

这样写的话是第一行的第一列和第一行的第二列都变红
OROCHIORI561 2010-04-02
  • 打赏
  • 举报
回复
objExcel.get_Range(,).Interior.Color 发现个这个属性 是另个类的对象 还不会用
是objExcel = new Microsoft.Office.Interop.Excel.Application();对象

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧