Member 13854008 Ответов: 0

Как конвертировать datagridview в excel (приложение для windows) с границами и столбцами тоже


я получаю лист excel, но у него нет границ или столбцов, я хочу, чтобы это было в правильных границах и столбцах

Что я уже пробовал:

private void CopyGridToClipboard(DataGridView grid)
       {
           //Exclude row headers
           grid.RowHeadersVisible = false;

           //Include column headers
           grid.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
           grid.SelectAll();
           DataObject dataObj = grid.GetClipboardContent();
           if (dataObj != null)
               Clipboard.SetDataObject(dataObj);

           //Set the visibility of row headers back
           grid.RowHeadersVisible = true;
       }

       private void button9_Click(object sender, EventArgs e)
       {
            //Copy grid to clipboard
    this.CopyGridToClipboard(dataGridView1);

    //Open the excel application and add a workbook
    XL.Application application;
    XL.Workbook book;
    XL.Worksheet sheet;
    application = new XL.Application();
    application.Visible = true;
    book = application.Workbooks.Add();
    sheet = (XL.Worksheet)book.Worksheets[1];

    //label1 Text in Cell[1,1]
    ((XL.Range)sheet.Cells[3, 5]).Value = this.label1.Text;

    //textBox1 Text in Cell[1,2]
    //((XL.Range)sheet.Cells[12, 2]).Value = this.textBox1.Text;

    


    //Let row 3 empty
    //Paste grid into Cell[4,1]
    XL.Range gridRange = (XL.Range)sheet.Cells[7, 3];
    gridRange.Select();
    sheet.PasteSpecial(gridRange);
}

        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            double cell1 = 0;   //Grand total of column 0
            double cell2 = 0;   //Grand total of column 2

            // Only interested in changes in columns 0 and 2 so ignore other columns
            if (e.ColumnIndex != 0 && e.ColumnIndex != 2) return;

            //Calculate grand total ... if only the total for this row is required
            // then comment out the foreach...
            foreach (DataGridViewRow r in dataGridView1.Rows)
            {
                double c1 = 0;
                double c2 = 0;
                if (r.Cells[0].Value != null)
                    if (double.TryParse(r.Cells[0].Value.ToString(), out c1))
                        cell1 += c1;
                if (r.Cells[2].Value != null)
                    if (double.TryParse(r.Cells[2].Value.ToString(), out c2))
                        cell2 += c2;
            }
            // Insert the grand total into this row
            dataGridView1.Rows[e.RowIndex].Cells[6].Value = cell1 + cell2;
        }



я пробовал это сделать , но у него нет границ и столбцов, только имена

Member 13854008

пожалуйста, кто-нибудь помогите...плз

0 Ответов