#region 报表导出
/// <summary>
/// 导出报表,指定DataGridView,导出DataGridView中的数据
/// </summary>
/// <param name="DgvOutEx">需要导出的DataGridView报表</param>
/// <param name="StrSheetName">报表名称</param>
/// <returns></returns>
public static string ExportExcel(DataGridView DgvOutEx, string StrSheetName)
{
if (DgvOutEx == null || DgvOutEx.Rows.Count == 0)
return "无导出数据!";
SaveFileDialog SfdExcel = new SaveFileDialog();
SfdExcel.Title = "请选择报表导出路径!";
SfdExcel.FileName = string.Format("{0:yyyyMMddHHmmss}", DateTime.Now) + StrSheetName;
SfdExcel.Filter = "Excel文档(*.xls)|*.xls";
DialogResult dr = SfdExcel.ShowDialog();
if (dr == DialogResult.OK && SfdExcel.FileName != "")
{
try
{
// 定义要使用的Excel 组件接口
// 定义Application 对象,此对象表示整个Excel 程序
Excel.Application ExApp = new Excel.Application();
if (ExApp == null)
{
return "无法创建Excel对象,可能你的电脑未安装Excel或你的Excel版本不是Office2003的!";
}
Excel.Workbooks ExBooks = ExApp.Workbooks;
// 定义Workbook对象,此对象代表工作薄
Excel.Workbook ExBook = ExBooks.Add(XlWBATemplate.xlWBATWorksheet);
// 定义Worksheet 对象,此对象表示Execel 中的一张工作表
Excel.Worksheet ExSheet = (Worksheet)ExBook.Worksheets[1];
// 命名工作表的名称为 "Task Management"
ExSheet.Name = string.Format("{0:yyyyMMddHHmmss}", DateTime.Now) + StrSheetName;
ExSheet.Cells.NumberFormatLocal = "@";
#region 将记录集写入Excel表
for (int i = 0; i < DgvOutEx.Rows.Count; i++)
{
int ExcelNum = 1;
for (int j = 0; j < DgvOutEx.Columns.Count; j++)
{
if (DgvOutEx.Columns[j].Visible != false)
{
if (i == 0)
{
ExSheet.Cells[i + 1, ExcelNum] = DgvOutEx.Columns[j].HeaderText;
}
if (DgvOutEx[j, i].ValueType.FullName == "System.DateTime" && DgvOutEx[j, i].Value.ToString() != string.Empty)
{
if (DgvOutEx.Columns[j].HeaderText == "计划日期")
{
ExSheet.Cells[i + 2, ExcelNum] = Convert.ToDateTime(DgvOutEx[j, i].Value).ToString("yyyy-MM-dd");
}
else
{
ExSheet.Cells[i + 2, ExcelNum] = Convert.ToDateTime(DgvOutEx[j, i].Value).ToString("yyyy-MM-dd HH:mm");
}
}
else
{
ExSheet.Cells[i + 2, ExcelNum] = DgvOutEx[j, i].Value.ToString();
}
ExcelNum = ExcelNum + 1;
}
}
}
#endregion
ExSheet.Cells.EntireColumn.AutoFit();
保存方式三
ExBook.Saved = true;
ExBook.SaveCopyAs(SfdExcel.FileName);
System.Runtime.InteropServices.Marshal.ReleaseComObject(ExSheet);
ExSheet = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(ExBook);
ExBook = null;
ExBooks.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(ExBooks);
ExBooks = null;
ExApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(ExApp);
ExApp = null;
return "导出Excel完成!";
}
catch (Exception e)
{
return e.ToString();
}
}
return string.Empty;
}
#endregion