/// <summary>
/// 導出GridView的數據到Excel的方法--沒有用服務器模式加載數據的使用
/// </summary>
/// <param name="GridView">要導出數據的GridView</param>
/// <param name="FileName">文件的名稱</param>
/// <param name="TitleName">數據的標題</param>
/// <param name="Remark">備註</param>
private void ExportToExcel(GridView gridView, string fileName, string titleName, string[] remark)
{
#region
if (gridView.RowCount == 0)
{
MessageUtil.ShowError("沒有數據可供導出!");
return;
}
else
{
saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "導出文件保存路徑";
saveFileDialog.FileName = fileName;
DialogResult dialog = saveFileDialog.ShowDialog();
if (dialog == DialogResult.Cancel) { return; }
string strName = saveFileDialog.FileName;
if (strName.Length != 0)
{
System.Reflection.Missing miss = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Application.Workbooks.Add(true); ;
excel.Visible = false;//若是true,則在導出的時候會顯示EXcel界面。
if (excel == null)
{
MessageUtil.ShowError("EXCEL無法啓動!");
return;
}
Microsoft.Office.Interop.Excel.Workbooks books = (Microsoft.Office.Interop.Excel.Workbooks)excel.Workbooks;
Microsoft.Office.Interop.Excel.Workbook book = (Microsoft.Office.Interop.Excel.Workbook)(books.Add(miss));
Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;
sheet.Name = "test";
//顯示標題
excel.Cells[1, gridView.Columns.Count / 2] = titleName;
//生成字段名稱
int columnCount = 0;//列的數量
/*數據一列一列的填充*/
for (int i = 0; i < gridView.Columns.Count; i++)
{
//只顯示可見的列
if (gridView.Columns[i].Visible)
{
excel.Cells[3, columnCount + 1] = gridView.Columns[i].Caption.ToString();
columnCount++;
/*填充數據*/
for (int j = 0; j < gridView.RowCount; j++)
{
if (gridView.GetRowCellValue(j, gridView.Columns[i]).GetType() == typeof(string))
{
excel.Cells[j + 4, columnCount] = "'" + gridView.GetRowCellValue(j, gridView.Columns[i]).ToString();
}
else
{
excel.Cells[j + 4, columnCount] = gridView.GetRowCellValue(j, gridView.Columns[i]).ToString();
}
}
}
}
//加入備註
for (int s = 0; s < remark.Length; s++)
{
excel.Cells[gridView.RowCount + 5, s + 1] = remark[s];
}
sheet.SaveAs(strName, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);
book.Close(false, miss, miss);
books.Close();
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
System.Runtime.InteropServices.Marshal.ReleaseComObject(books);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
GC.Collect();
MessageUtil.ShowTips("數據已經成功導出!");
System.Diagnostics.Process.Start(strName);
}
}
#endregion
}