Как экспортировать 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......