在VS2005中,将DataGridView中的数据导入到Excel文件中

/// <summary>
/// 将DataGrid中的数据导入Excel中,并显示Excel应用程序,

/// 注意调用该方法必须有安装Excel应用程序,并且假定DataGridView中绑定的是一DataTable
/// </summary>
/// <param name="grid"></param>

         public   static   void  ExportDataGridToExcel(DataGridView grid)
        
{
            System.Data.DataTable myTable 
= (System.Data.DataTable)grid.DataSource;

            
try
            
{
                Microsoft.Office.Interop.Excel.Application xlApp 
= 
                         
new Microsoft.Office.Interop.Excel.ApplicationClass();

                
int rowIndex;
                
int colIndex;

                rowIndex 
= 1;
                colIndex 
= 0;

                Microsoft.Office.Interop.Excel.Workbook xlBook 
= xlApp.Workbooks.Add(true);

                
if (grid.Rows.Count > 0)
                
{
                    
foreach (DataGridViewColumn colu in grid.Columns)
                    
{
                        colIndex 
= colIndex + 1;
                        xlApp.Cells[
1, colIndex] = colu.HeaderText;
                    }


                    
//得到的表所有行,赋值给单元格

                    
for (int row = 0; row < myTable.Rows.Count; row++)
                    
{
                        rowIndex 
= rowIndex + 1;
                        colIndex 
= 0;
                        
for (int col = 0; col < grid.Columns.Count; col++)
                        
{
                            colIndex 
= colIndex + 1;
                            xlApp.Cells[rowIndex, colIndex] 
= grid.Rows[row].Cells[col].Value;
                        }

                    }

                }

                
else
                
{
                    
//将表中的栏位名称填到Excel的第一行

                    
foreach (DataColumn Col in myTable.Columns)
                    
{
                        colIndex 
= colIndex + 1;
                        xlApp.Cells[
1, colIndex] = Col.ColumnName;
                    }


                    
//得到的表所有行,赋值给单元格

                    
for (int row = 0; row < myTable.Rows.Count; row++)
                    
{
                        rowIndex 
= rowIndex + 1;
                        colIndex 
= 0;
                        
for (int col = 0; col < myTable.Columns.Count; col++)
                        
{
                            colIndex 
= colIndex + 1;
                            xlApp.Cells[rowIndex, colIndex] 
= grid.Rows[row].Cells[col].Value;
                        }

                    }

                }

                xlApp.get_Range(xlApp.Cells[
11], xlApp.Cells[1, colIndex]).Font.Bold = true;
                xlApp.Cells.EntireColumn.AutoFit();
                xlApp.Cells.VerticalAlignment 
= Microsoft.Office.Interop.Excel.Constants.xlCenter;
                xlApp.Cells.HorizontalAlignment 
= Microsoft.Office.Interop.Excel.Constants.xlCenter;
                xlApp.Visible 
= true;
            }

            
catch (Exception e)
            
{
                
throw e;
            }

            
        }

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以使用以下代码实现将DataGridView的可见行导出到Excel模板: ```csharp private void ExportToExcel(DataGridView dgv) { // 创建Excel对象 Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Visible = true; Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(System.Reflection.Missing.Value); Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets[1]; // 写入DataGridView的列标题 for (int i = 0; i < dgv.ColumnCount; i++) { worksheet.Cells[1, i + 1] = dgv.Columns[i].HeaderText; } // 写入DataGridView的可见行 int rowIndex = 2; foreach (DataGridViewRow row in dgv.Rows) { if (row.Visible) { for (int i = 0; i < dgv.ColumnCount; i++) { worksheet.Cells[rowIndex, i + 1] = row.Cells[i].Value; } rowIndex++; } } // 保存Excel文件 SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Excel文件|*.xlsx"; saveFileDialog.Title = "保存Excel文件"; saveFileDialog.ShowDialog(); if (saveFileDialog.FileName != "") { workbook.SaveAs(saveFileDialog.FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook, System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlUserResolution, true, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value); } } ``` 在上述代码,我们首先创建了一个Excel对象。然后,我们在Excel创建了一个工作簿和一个工作表,并将DataGridView的列标题写入工作表。接下来,我们循环遍历DataGridView的每一行,如果该行可见,则将该行数据写入Excel。最后,我们使用SaveFileDialog保存Excel文件。 您可以在需要导出DataGridView数据的地方调用此方法,例如在按钮的Click事件。调用方法时,将DataGridView作为参数传递给该方法即可: ```csharp private void btnExport_Click(object sender, EventArgs e) { ExportToExcel(dataGridView1); } ``` 希望这可以帮助您将DataGridView的可见行导出到Excel模板

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值