C#把gird数据导出到excel
2017-01-16 16:05
344 查看
/// <summary>
/// DataTable导出到Excel
/// </summary>
/// <param name="fileName">默认的文件名</param>
/// <param name="dataTable">数据源,一个DataTable数据表</param>
/// <param name="titleRowCount">标题占据的行数,为0则表示无标题</param>
public void ExportExcel(string fileName, DevExpress.Xpf.Grid.GridControl gc, int titleRowCount)
{
string saveFileName = "";
//bool fileSaved = false;
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = fileName;
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0) return; //被点了取消
Microsoft.Office.Interop.Excel.Application xlApp;
try
{
xlApp = new Microsoft.Office.Interop.Excel.Application();
}
catch (Exception)
{
MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
return;
}
finally
{
}
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
//写Title
if (titleRowCount != 0)
MergeCells(worksheet, 1, 1, titleRowCount, gc.Columns.Count, "test");
//写入列标题
for (int i = 0; i <= gc.Columns.Count - 1; i++)
{
worksheet.Cells[titleRowCount + 1, i + 1] = gc.Columns[i].Header.ToString();
}
//写入数值
for (int r = 0; r <= gc.GetRowsAsync(0, gc.VisibleRowCount).Result.Count; r++)
{
for (int i = 0; i <= gc.Columns.Count - 1; i++)
{
string cellValue1 = gc.GetCellDisplayText(r, gc.Columns[i]);
worksheet.Cells[r + titleRowCount + 2, i + 1] = cellValue1;
}
System.Windows.Forms.Application.DoEvents();
}
worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
Excel.Range rg = worksheet.Range[worksheet.Cells[2, 2], worksheet.Cells[gc.GetRowsAsync(0, gc.VisibleRowCount).Result.Count+1, 2]];
rg.NumberFormat = "000000";
if (saveFileName != "")
{
try
{
workbook.Saved = true;
workbook.SaveCopyAs(saveFileName);
//fileSaved = true;
}
catch (Exception ex)
{
//fileSaved = false;
MessageBox.Show("导出文件时出错,文件可能正被打开!n" + ex.Message);
}
}
xlApp.Quit();
GC.Collect();//强行销毁
// if (fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL
MessageBox.Show(fileName + "导出到Excel成功", "提示", MessageBoxButton.OK);
}
/// DataTable导出到Excel
/// </summary>
/// <param name="fileName">默认的文件名</param>
/// <param name="dataTable">数据源,一个DataTable数据表</param>
/// <param name="titleRowCount">标题占据的行数,为0则表示无标题</param>
public void ExportExcel(string fileName, DevExpress.Xpf.Grid.GridControl gc, int titleRowCount)
{
string saveFileName = "";
//bool fileSaved = false;
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = fileName;
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0) return; //被点了取消
Microsoft.Office.Interop.Excel.Application xlApp;
try
{
xlApp = new Microsoft.Office.Interop.Excel.Application();
}
catch (Exception)
{
MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
return;
}
finally
{
}
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
//写Title
if (titleRowCount != 0)
MergeCells(worksheet, 1, 1, titleRowCount, gc.Columns.Count, "test");
//写入列标题
for (int i = 0; i <= gc.Columns.Count - 1; i++)
{
worksheet.Cells[titleRowCount + 1, i + 1] = gc.Columns[i].Header.ToString();
}
//写入数值
for (int r = 0; r <= gc.GetRowsAsync(0, gc.VisibleRowCount).Result.Count; r++)
{
for (int i = 0; i <= gc.Columns.Count - 1; i++)
{
string cellValue1 = gc.GetCellDisplayText(r, gc.Columns[i]);
worksheet.Cells[r + titleRowCount + 2, i + 1] = cellValue1;
}
System.Windows.Forms.Application.DoEvents();
}
worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
Excel.Range rg = worksheet.Range[worksheet.Cells[2, 2], worksheet.Cells[gc.GetRowsAsync(0, gc.VisibleRowCount).Result.Count+1, 2]];
rg.NumberFormat = "000000";
if (saveFileName != "")
{
try
{
workbook.Saved = true;
workbook.SaveCopyAs(saveFileName);
//fileSaved = true;
}
catch (Exception ex)
{
//fileSaved = false;
MessageBox.Show("导出文件时出错,文件可能正被打开!n" + ex.Message);
}
}
xlApp.Quit();
GC.Collect();//强行销毁
// if (fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL
MessageBox.Show(fileName + "导出到Excel成功", "提示", MessageBoxButton.OK);
}
相关文章推荐
- C#中导出数据到EXCEL的简单例子
- C#数据导出到Excel
- C#将DataGridView中的数据导出为EXCEL
- C# 将数据导出到Excel汇总
- C#导出数据到Excel中方法总结
- c#中将数据库数据导出到EXCEL中
- C#将DataGridView中的数据导出为EXCEL
- 如何将数据从c#导出到excel表
- C#操作Excel,将DataGridView数据导出到Excel中
- c#导出数据到Excel
- C# 快速填充excel 数据表导出excel
- [转]C#实现MS SQL数据导出到Excel
- C#中怎么从如何将DataGridView中的数据导出到Excel中
- C# 从windows应用程序导出数据到excel
- C#操作Excel,将DataGridView数据导出到Excel中
- [原创]大量数据导出为Excel文件的问题解决(C#,ASP.NET)
- C#将DataGridView中的数据导出为EXCEL
- C# 数据导出到Excel
- c# 代码创建Excel文件 并且 将数据导出Excel
- [ASP.NET-C#]将DataSet、DataTable中的数据导出为Excel的解决方法