Member 12305778 Ответов: 0

Как экспортировать 2 datagridview в один лист excel


Я попробовал использовать буфер обмена
но он экспортирует только одну сетку.
Пожалуйста, помогите мне экспортировать 2 или более сеток в одном листе 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 btnExport_Click(object sender, EventArgs e)
     {
         this.CopyGridToClipboard(dataGridView1);
       <code></code>
         //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[1, 1]).Value = this.label1.Text;

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

         ((XL.Range)sheet.Cells[1, 4]).Value = this.label3.Text;

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

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


         this.CopyGridToClipboard(dataGridView2);
         XL.Range gridRange1 = (XL.Range)sheet.Cells[24, 1];
         gridRange.Select();

         sheet.PasteSpecial(gridRange1);




     }

Richard MacCutchan

Вам нужно использовать свой отладчик, чтобы собрать больше информации. После каждого звонка Clipboard.SetDataObject вы должны сделать ручную проверку, чтобы увидеть, что находится в буфере обмена.

Member 12305778

Да
Спасибо получил в 2-й сетки следует gridrange1.выберите();
:)

Richard MacCutchan

Почему бы просто не использовать gridRange для обеих операций?

Member 12305778

Он дает одно и то же имя несколько раз.

Richard MacCutchan

Понятия не имею, что это значит. Я предлагаю вам отредактировать свой вопрос и показать свой обновленный код.

bellpatricia

Один из самых простых подходов, который вы можете принять, - это использовать это C# и VB.NET библиотека для Excel, подобный этому:

ExcelFile book = новый ExcelFile();
ExcelWorksheet sheet = книга.Worksheets. Add ("Лист1");

лист.Ячейки[1, 1]. значение = это.метка1.Текст;
лист.Ячейки[1, 2]. Value = this.combSOName.Выбранное значение.Метод toString();
лист.Ячейки[1, 4]. значение = это.метка3.Текст;
лист.Ячейки[1, 5]. Value = this. comboPartno. Text;

DataGridViewConverter.ImportFromDataGridView(лист, this. dataGridView1,
    new ImportFromDataGridViewOptions(6, 1) { ColumnHeaders = false });
DataGridViewConverter.ImportFromDataGridView(лист, this. dataGridView2,
    new ImportFromDataGridViewOptions(24, 1) { ColumnHeaders = false });

Если вам интересно, вы можете найти полный пример экспорт DataGridView в Excel на C# и VB.NET здесь.

Member 12305778

Эй,
Он не принимает DataGridViewConverter......

0 Ответов