![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
public
static
bool DataTableToExcel(System.Data.DataTable dt,
string fileName,
bool showFileDialog=
false)
{
if (showFileDialog)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = " Execl files (*.xls)|*.xls ";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.FileName = fileName;
saveFileDialog.Title = " Export Excel File To ";
// saveFileDialog.ShowDialog();
if (saveFileDialog.ShowDialog() == DialogResult.OK)
fileName = saveFileDialog.FileName;
else
return false;
}
System.Reflection.Missing miss = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
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;
if (! string.IsNullOrEmpty(dt.TableName))
{
sheet.Name = dt.TableName;
}
int intIndex = 0;
foreach (DataColumn column in dt.Columns)
{
intIndex++;
excel.Cells[ 1, intIndex] = column.ColumnName;
}
int rowCount = dt.Rows.Count;
int colCount = dt.Columns.Count;
object[,] dataArray = new object[rowCount, colCount];
for ( int i = 0; i < rowCount; i++)
{
for ( int j = 0; j < colCount; j++)
{
// 避免格式不兼容,加上"'"
dataArray[i, j] = " ' "+dt.Rows[i][j].ToString();
}
}
sheet.get_Range( " A2 ", sheet.Cells[rowCount + 1, colCount]).Value2 = dataArray;
sheet.SaveAs(fileName, 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();
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();
return true;
}
{
if (showFileDialog)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = " Execl files (*.xls)|*.xls ";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.FileName = fileName;
saveFileDialog.Title = " Export Excel File To ";
// saveFileDialog.ShowDialog();
if (saveFileDialog.ShowDialog() == DialogResult.OK)
fileName = saveFileDialog.FileName;
else
return false;
}
System.Reflection.Missing miss = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
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;
if (! string.IsNullOrEmpty(dt.TableName))
{
sheet.Name = dt.TableName;
}
int intIndex = 0;
foreach (DataColumn column in dt.Columns)
{
intIndex++;
excel.Cells[ 1, intIndex] = column.ColumnName;
}
int rowCount = dt.Rows.Count;
int colCount = dt.Columns.Count;
object[,] dataArray = new object[rowCount, colCount];
for ( int i = 0; i < rowCount; i++)
{
for ( int j = 0; j < colCount; j++)
{
// 避免格式不兼容,加上"'"
dataArray[i, j] = " ' "+dt.Rows[i][j].ToString();
}
}
sheet.get_Range( " A2 ", sheet.Cells[rowCount + 1, colCount]).Value2 = dataArray;
sheet.SaveAs(fileName, 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();
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();
return true;
}