数据导出问题 现在有这么种情况,我要把datagrid的数据导出来execl,有几列是有背景色的,而且datagrid的已经分页了的,我现在要把所有数据导出,保留相应列的背景色,导出的数据是全部,而不是只是一页 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那就直接取datatable的数据,设置背景色,自己查查msdn web 没搞过 winform 可以 告诉你 全部代码 if (dataGridView2.DataSource ==null || dataGridView2.Rows.Count <= 0) { MessageBox.Show("没有数据可导出", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Excel File|*.xls"; if (sfd.ShowDialog() == DialogResult.OK) { try { System.Data.DataTable dt = dataGridView2.DataSource as System.Data.DataTable; Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook workBook = excel.Workbooks.Add(true); Microsoft.Office.Interop.Excel.Worksheet excelSheet = workBook.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet; excel.Cells.Select(); excel.Cells.Columns.AutoFit(); for (int x = 0; x < dt.Rows.Count-1; x++) { excel.Cells[1, x + 1] = dt.Columns[x].ColumnName; } for (int i = 0; i < dt.Rows.Count; i++) { for (int k = 0; k < dt.Rows.Count-1; k++) { excel.Cells[i + 2, k + 1] = dt.Rows[i][k].ToString(); } } excel.DisplayAlerts = false; excel.AlertBeforeOverwriting = false; excelSheet.SaveAs(sfd.FileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); workBook.Save(); excel.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(excelSheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook); System.Runtime.InteropServices.Marshal.ReleaseComObject(excel); excelSheet = null; workBook = null; excel = null; GC.Collect(); MessageBox.Show("导出数据成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch { MessageBox.Show("导出数据失败","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Information); } winform版本的哈 看对你有帮助没有 这个方法 winform 是没有问题的 测试过了 datagrid分页的也可以吗 某几列的背景色怎么弄 C#中如何挂起一个线程 c#动态编译 能不能给动态编译的代码段中的一个数组赋值为 编译代码外的一个数组的值呢! C# 委托 在C# WinForm 如何保存公共信息? 变量 包含某字符的函数 救救命呀 托管代码问题 急救啊,打120了啊 请问C#中的math.floor和math.pow在VB6。0中如何实现? 比较困难的问题,高手进来看看 C#的编译环境是什么? C#contextMenuStrip合并的问题 请问,ListView添加项,如何让滚动条自动向下滚
if (dataGridView2.DataSource ==null || dataGridView2.Rows.Count <= 0)
{
MessageBox.Show("没有数据可导出", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Excel File|*.xls";
if (sfd.ShowDialog() == DialogResult.OK)
{
try
{
System.Data.DataTable dt = dataGridView2.DataSource as System.Data.DataTable;
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook workBook = excel.Workbooks.Add(true);
Microsoft.Office.Interop.Excel.Worksheet excelSheet = workBook.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
excel.Cells.Select();
excel.Cells.Columns.AutoFit();
for (int x = 0; x < dt.Rows.Count-1; x++)
{
excel.Cells[1, x + 1] = dt.Columns[x].ColumnName;
}
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int k = 0; k < dt.Rows.Count-1; k++)
{
excel.Cells[i + 2, k + 1] = dt.Rows[i][k].ToString();
}
}
excel.DisplayAlerts = false;
excel.AlertBeforeOverwriting = false;
excelSheet.SaveAs(sfd.FileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
workBook.Save();
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
excelSheet = null;
workBook = null;
excel = null;
GC.Collect();
MessageBox.Show("导出数据成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("导出数据失败","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}