繁体   English   中英

在C#中使用Microsoft.Office.Interop.Excel将数据Excel移至40行数据后的右列

[英]Move data Excel to Right Column after 40 Rows Data using Microsoft.Office.Interop.Excel in C#

我想问一下从Gridviews导出到Excel的数据。 对于exp,如果我在gridview中有500个数据,我希望我的数据可以在40行后移到右列,因为如果我在右侧打印出这么多的空白空间。 这是我将gridview导出到Excel的代码。

private void exToExcel()
    {
        if (RekapdataGridView.Rows.Count > 0)
        {
            Microsoft.Office.Interop.Excel.Application XcelApp = new Microsoft.Office.Interop.Excel.Application();
            XcelApp.Application.Workbooks.Add(Type.Missing);
            Microsoft.Office.Interop.Excel.Worksheet lembarKerja = XcelApp.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
            XcelApp.Cells[1, 1] = "Tanggal";
            XcelApp.Cells[1, 2] = labelTglRekap.Text;
            XcelApp.Cells[2, 1] = "Kode Pemain";
            XcelApp.Cells[2, 2] = labelKodePemain.Text;


            int x = RekapdataGridView.RowCount;

            for (int i = 1; i < RekapdataGridView.Columns.Count + 1; i++)
            {
                XcelApp.Cells[4, i] = RekapdataGridView.Columns[i - 1].HeaderText;
            }

            for (int i = 0; i < RekapdataGridView.Rows.Count; i++)
            {
                for (int j = 0; j < RekapdataGridView.Columns.Count; j++)
                {
                    //"'{0}" untuk menampilkan 0 pada awal angka
                    XcelApp.Cells[i + 5, j + 1] = string.Format("'{0}",RekapdataGridView.Rows[i].Cells[j].Value);                  
                }
            }

            //bold pada judul table
            lembarKerja.Range["A4"].EntireRow.Font.Bold = true;

            //untuk menampilkan border pada excel
            var batas = x + 4;
            Excel.Range last = lembarKerja.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing);
            Excel.Range cellRange = lembarKerja.get_Range("A4", last);
            Excel.Borders xborders = cellRange.Borders;
            xborders.LineStyle = Excel.XlLineStyle.xlContinuous;
            xborders.Weight = 2d;


            XcelApp.Columns.AutoFit();            
            XcelApp.Visible = true;

        }
    }

这是我的Excel中的图像:

在此处输入图片说明

我想更改为:

在此处输入图片说明

4次后移到F列,希望单元格“ a1:b2”中的标题可以重复到下一页,例如Excel中的“打印标题”功能。

当所有类似数据都位于同一列或同一行中时,Excel往往会发挥最大的作用。

如果我理解正确,我会一直计数到将40个单元格写入列,然后将2加到列int上。

for (int i = 0; i < RekapdataGridView.Rows.Count; i++)
{
    for (int j = 0; j < RekapdataGridView.Columns.Count; j++)
    {
        count++;

        if(count == 40)
        {
            count = 0;
            columnnumb = columnnumb + 2;
        }

        XcelApp.Cells[i + 5, j + columnnumb] = string.Format("'{0}", RekapdataGridView.Rows[i].Cells[j].Value);                  
    }
}

像这样的事情,我还没有测试过,但是想法是每次在当前列中打印40行时,都要移动列号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM