利用GemBox.ExcelLite.dll脱离Excel环境,把DataGridView数据导出到Excel文件。
public
void
DataGridView2Excel_GemBox(DataGridView dgv)
{
#region 导出前判断
// 行数必须大于0
if (dgv.Rows.Count <= 0 )
{
MessageBox.Show( " 没有数据可供导出! " , " 提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
return ;
}
// 列数必须大于0
if (dgv.Columns.Count <= 0 )
{
MessageBox.Show( " 没有数据可供导出! " , " 提示 " ,MessageBoxButtons.OK,MessageBoxIcon.Information);
return ;
}
// 行数不可以大于65536
if (dgv.Rows.Count > 65536 )
{
MessageBox.Show( " 数据记录数太多(最多不能超过65536条),不能保存! " , " 提示 " ,MessageBoxButtons.OK,MessageBoxIcon.Information);
return ;
}
// 列数不可以大于256
if (dgv.Columns.Count > 256 )
{
MessageBox.Show( " 数据记录数太多(最多不能超过256列),不能保存! " , " 提示 " ,MessageBoxButtons.OK,MessageBoxIcon.Information);
return ;
}
#endregion
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = " Excel files (*.xls)|*.xls " ;
dlg.FilterIndex = 0 ;
dlg.RestoreDirectory = true ;
dlg.CreatePrompt = false ;
dlg.Title = " 导出为Excel文件 " ;
if (dlg.ShowDialog() == DialogResult.OK)
{
ExcelFile excelFile = new ExcelFile();
ExcelWorksheet sheet = excelFile.Worksheets.Add( " Account " );
try
{
// 向Excel中写入表格的表头
for ( int i = 0 ; i < dgv.Columns.Count; i ++ )
{
sheet.Cells[ 0 , i].Value = dgv.Columns[i].HeaderText;
}
// 向Excel中写入表格的数据
for ( int i = 0 ; i < dgv.Rows.Count; i ++ )
{
DataGridViewRow row = dgv.Rows[i];
for ( int j = 0 ; j < row.Cells.Count; j ++ )
{
sheet.Cells[i + 1 , j].Value = row.Cells[j].Value;
}
}
excelFile.SaveXls(dlg.FileName);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, " 警告 " , MessageBoxButtons.OK, MessageBoxIcon.Warning);
return ;
}
MessageBox.Show(dlg.FileName + " \n\n导出完毕! " , " 提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
{
#region 导出前判断
// 行数必须大于0
if (dgv.Rows.Count <= 0 )
{
MessageBox.Show( " 没有数据可供导出! " , " 提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
return ;
}
// 列数必须大于0
if (dgv.Columns.Count <= 0 )
{
MessageBox.Show( " 没有数据可供导出! " , " 提示 " ,MessageBoxButtons.OK,MessageBoxIcon.Information);
return ;
}
// 行数不可以大于65536
if (dgv.Rows.Count > 65536 )
{
MessageBox.Show( " 数据记录数太多(最多不能超过65536条),不能保存! " , " 提示 " ,MessageBoxButtons.OK,MessageBoxIcon.Information);
return ;
}
// 列数不可以大于256
if (dgv.Columns.Count > 256 )
{
MessageBox.Show( " 数据记录数太多(最多不能超过256列),不能保存! " , " 提示 " ,MessageBoxButtons.OK,MessageBoxIcon.Information);
return ;
}
#endregion
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = " Excel files (*.xls)|*.xls " ;
dlg.FilterIndex = 0 ;
dlg.RestoreDirectory = true ;
dlg.CreatePrompt = false ;
dlg.Title = " 导出为Excel文件 " ;
if (dlg.ShowDialog() == DialogResult.OK)
{
ExcelFile excelFile = new ExcelFile();
ExcelWorksheet sheet = excelFile.Worksheets.Add( " Account " );
try
{
// 向Excel中写入表格的表头
for ( int i = 0 ; i < dgv.Columns.Count; i ++ )
{
sheet.Cells[ 0 , i].Value = dgv.Columns[i].HeaderText;
}
// 向Excel中写入表格的数据
for ( int i = 0 ; i < dgv.Rows.Count; i ++ )
{
DataGridViewRow row = dgv.Rows[i];
for ( int j = 0 ; j < row.Cells.Count; j ++ )
{
sheet.Cells[i + 1 , j].Value = row.Cells[j].Value;
}
}
excelFile.SaveXls(dlg.FileName);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, " 警告 " , MessageBoxButtons.OK, MessageBoxIcon.Warning);
return ;
}
MessageBox.Show(dlg.FileName + " \n\n导出完毕! " , " 提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}