Добавить текст в лист Excel перед преобразованием данных - PullRequest
0 голосов
/ 12 февраля 2020

Я хочу добавить основную c информацию о DataGridView, прежде чем мой DGV будет преобразован в Excel. Это пример из целого rnet примера вывода , в настоящее время я могу загрузить все данные в Excel, но я не уверен, как жестко закодировать заголовок (строка1 из числа пи c) и некоторые базовая информация c (строка 2 от pi c) до преобразования данных.

Если что-то неясно, дайте мне знать.

//Create headers
for (int i = 0; i < dv.Columns.Count; i++)
    {
        Excel.Range CellHeadersRange = ws.get_Range(GetExcelColumnName(i + 1) + rowstartindex.ToString(), GetExcelColumnName(i + 1) + rowstartindex.ToString());
        //Setting the borders
        CellHeadersRange.BorderAround2(LineStyle.Thin, Excel.XlBorderWeight.xlThin, Excel.XlColorIndex.xlColorIndexNone,
        Color.FromArgb(255, 0, 0), Type.Missing);

        //Aligning headers to the middle
        CellHeadersRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
        //Updating header value to Excel
        CellHeadersRange.Value = dv.Columns[i].HeaderText;

        CellHeadersRange.Font.Bold = true;

        double widthDGV = (dv.Columns[i].Width) / 10;
        Math.Ceiling(widthDGV);
        CellHeadersRange.ColumnWidth = widthDGV * 2;

    }

    //Write data
    for (int i = 0; i < dv.Rows.Count - 1; i++)
    {
        for (int j = 0; j < dv.Columns.Count; j++)
        {
            Excel.Range CellDataRange = ws.get_Range(GetExcelColumnName(j + 1) + (i + rowstartindex + 1).ToString());

            CellDataRange.WrapText = true;

            //Setting borders for all cells
            CellDataRange.BorderAround2(LineStyle.Thin, Excel.XlBorderWeight.xlThin, Excel.XlColorIndex.xlColorIndexNone, Color.FromArgb(255, 0, 0), Type.Missing);

            CellDataRange.Value = dv[j, i].Value;

            //Verify that backgroundcolor of datagrid is not RGB(0,0,0,0) and in that case apply datagridviewcell color to excel range
            if (!dv.Rows[i].Cells[j].Style.BackColor.IsEmpty)
                CellDataRange.Interior.Color = dv.Rows[i].Cells[j].Style.BackColor;

            //Verify that font style exist before checking for bold and in that case apply datagridviewcell font.bold property to excel range
            if (dv.Rows[i].Cells[j].Style.Font != null)
                CellDataRange.Font.Bold = dv.Rows[i].Cells[j].Style.Font.Bold;
        }
    }

    wb = null;
    ws = null;
    xlApp = null;

    GC.Collect();
    GC.WaitForPendingFinalizers();

Редактировать: Возможно, мой вопрос повсюду из-за того, что я не получил ответа, поэтому я был Интересно, как я могу добавить данные в первый ряд существующего листа Excel? Допустим, используя мой код, я сначала создаю свой лист Excel, чем я хотел бы вставить пару новых строк в начало листа. Как мне этого добиться ??

Решение:

            //Writitng the title
        Excel.Range line = (Excel.Range)ws.Rows[1];
        line.Insert();
        Excel.Range rng = ws.get_Range("B1");


        rng.RowHeight = 35;
        rng.Font.Bold = true;
        rng.Value = "Assumptions";
        rng.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
        rng.Font.Size = 14;
        rng.Interior.Color = Color.LightBlue;
        rng = ws.get_Range("A1");
        rng.Interior.Color = Color.LightBlue;

Вы можете манипулировать тем местом, куда хотите вставить строку, изменив это ws.Rows [x];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...