首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每行仅打印5个项目

每行仅打印5个项目
EN

Stack Overflow用户
提问于 2016-11-15 11:28:35
回答 1查看 83关注 0票数 0

我目前手头有一份物品清单。

例如,

代码语言:javascript
复制
List <string> listOfItem = new List <string>()
{
  "item1",
  "item2",
  "item3",
  "item4",
  "item5",
  "item6",
  "item7",
  "item8",
  "item9",
  "item10",
  "item11",
}

我正在尝试做一个Excel导出,我只打印5个第一个项目,然后我移动到下一个工作表,打印接下来的5个项目,然后重复这个过程。

这就是我尝试过的

代码语言:javascript
复制
int j = 0; 

for (int i = 0; i < listOfItem.Count; i+=4)
{
    if (listOfItem[i] != null){
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j], xlWorkSheet.Cells[8, (j + 1)]].Merge();
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j], xlWorkSheet.Cells[8, (j + 1)]] = orderDate[i];
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j], xlWorkSheet.Cells[8, (j + 1)]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j], xlWorkSheet.Cells[8, (j + 1)]].VerticalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j], xlWorkSheet.Cells[8, (j + 1)]].Font.Size = "11";
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j], xlWorkSheet.Cells[8, (j + 1)]].Font.Name = "Arial";
    }
    if (listOfItem[i +1] != null){
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+2], xlWorkSheet.Cells[8, (j + 3)]].Merge();
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j + 2], xlWorkSheet.Cells[8, (j + 3)]] = listOfItem[i+1];
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j + 2], xlWorkSheet.Cells[8, (j + 3)]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j + 2], xlWorkSheet.Cells[8, (j + 3)]].VerticalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j + 2], xlWorkSheet.Cells[8, (j + 3)]].Font.Size = "11";
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j + 2], xlWorkSheet.Cells[8, (j + 3)]].Font.Name = "Arial";
    }
    if (listOfItem[i+2] != null){
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+3], xlWorkSheet.Cells[8, (j + 5)]].Merge();
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+4], xlWorkSheet.Cells[8, (j + 5)]] = listOfItem[i+2];
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+4], xlWorkSheet.Cells[8, (j + 5)]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+4], xlWorkSheet.Cells[8, (j + 5)]].VerticalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+4], xlWorkSheet.Cells[8, (j + 5)]].Font.Size = "11";
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+4], xlWorkSheet.Cells[8, (j + 5)]].Font.Name = "Arial";
    }
    if (listOfItem[i+3] != null){
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+6], xlWorkSheet.Cells[8, (j + 7)]].Merge();
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+6], xlWorkSheet.Cells[8, (j + 7)]] = listOfItem[i+3];
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+6], xlWorkSheet.Cells[8, (j + 7)]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+6], xlWorkSheet.Cells[8, (j + 7)]].VerticalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+6], xlWorkSheet.Cells[8, (j + 7)]].Font.Size = "11";
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+6], xlWorkSheet.Cells[8, (j + 7)]].Font.Name = "Arial";
    }
    if (listOfItem[i+4] != null){
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+8], xlWorkSheet.Cells[8, (j + 9)]].Merge();
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+8], xlWorkSheet.Cells[8, (j + 9)]] = listOfItem[i+4];
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+8], xlWorkSheet.Cells[8, (j + 9]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j+ 8], xlWorkSheet.Cells[8, (j + 9)]].VerticalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j + 8], xlWorkSheet.Cells[8, (j + 9)]].Font.Size = "11";
        xlWorkSheet.Range[xlWorkSheet.Cells[8, j + 8], xlWorkSheet.Cells[8, (j + 9)]].Font.Name = "Arial";
    }
}

我做if else是因为如果列表只有..例如,3个项目,则由于if else循环,代码将基于3个项目执行。

然而,这段代码很长,有没有更精致/优雅的方法来做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2016-11-15 11:39:18

这可能对你有用。

代码语言:javascript
复制
int j = 0; 
for (int i = 0; i < listOfItem.Count; i++)
{
    for(int j=0;j<((listOfItem.Count*2)-2);j+=2)
    {
        if (listOfItem[i] != null)
        {
            xlWorkSheet.Range[xlWorkSheet.Cells[8, j], xlWorkSheet.Cells[8, (j + 1)]].Merge();
            xlWorkSheet.Range[xlWorkSheet.Cells[8, j], xlWorkSheet.Cells[8, (j + 1)]] = listOfItem[i];
            xlWorkSheet.Range[xlWorkSheet.Cells[8, j], xlWorkSheet.Cells[8, (j + 1)]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
            xlWorkSheet.Range[xlWorkSheet.Cells[8, j], xlWorkSheet.Cells[8, (j + 1)]].VerticalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
            xlWorkSheet.Range[xlWorkSheet.Cells[8, j], xlWorkSheet.Cells[8, (j + 1)]].Font.Size = "11";
            xlWorkSheet.Range[xlWorkSheet.Cells[8, j], xlWorkSheet.Cells[8, (j + 1)]].Font.Name = "Arial";
        }
    }
}

这将适用于一个工作表,您也可以拉出更多的工作表,并将代码包装在foreach循环中,以便相应地将数据发送到另一个工作表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40601512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档