簡體   English   中英

將DataTable導出到Excel工作表-創建時獲取空行

[英]Export DataTable to Excel Sheet - Getting Empty Rows When Creating

我有一個由6個表格組成的數據集。 當我將它們放入下面的方法中時,它在第一個表上可以正常工作。 但是,我注意到在第二個表中,第二行(在列下方)為空白,然后顯示了表數據。 對於表三,這是相同的,只是這次有兩行是空白的。 隨着其余每個表的建立,這將增加空白行。 我驗證了表本身沒有這些空行。 我希望這里有人會很友好地看一下這段代碼,並讓我知道這是什么原因。

public Excel.Application PrepareForExport(System.Data.DataSet ds)
{
    object missing = System.Reflection.Missing.Value;
    Excel.Application excel = new Excel.Application();
    Excel.Workbook workbook = excel.Workbooks.Add(missing);
    int k = 0;
    int tableCount = 6;
    for (int j = 0; j < tableCount; j++)  
    {
        Excel.Worksheet newWorksheet;
        newWorksheet = (Excel.Worksheet)excel.Worksheets.Add(missing, missing, missing, missing);


        System.Data.DataTable dt = new System.Data.DataTable();
        dt = ds.Tables[j];
        // name sheet
        string tableName = string.Empty;

        switch (j)
        {
            case 0: 
                tableName = "TEST1";
                break;
            case 1:
                tableName = "TEST2";
                break;
            case 2:
                tableName = "TEST3";
                break;
            case 3:
                tableName = "TEST4";
                break;
            case 4:
                tableName = "TEST5";
                break;
            case 5:
                tableName = "TEST6";
                break;
            default:
                tableName = "INVALID";
                break;
        }

        newWorksheet.Name = tableName;


        int iCol = 0;
        foreach (DataColumn c in dt.Columns)
        {
            iCol++;
            excel.Cells[1, iCol] = c.ColumnName;
        }


        int iRow = 0 + k;
        foreach (DataRow r in dt.Rows)
        {
            iRow++;


            for (int i = 1; i < dt.Columns.Count + 1; i++)
            {
                if (iRow == 1)
                {
                    // Add the header the first time through 
                    excel.Cells[iRow, i] = dt.Columns[i - 1].ColumnName;
                }

                if (r[1].ToString() != "")
                {
                    excel.Cells[iRow + 1, i] = r[i - 1].ToString() + " - " + dt.Columns.Count;
                }
            }

        }
        k++;
    }
    return excel;
}

我認為這是您的int k變量和iRow造成的。
你設置

int k = 0;

在您遍歷表格之外。
然后在循環內

int iRow = 0 + k;

然后在循環末尾增加k。 因此對於第一個表,您需要iRow = 0; 第二個表,iRow = 1; 第三張表,iRow = 2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM