DataTable导入到Excel文件
2013-08-28 10:01
393 查看
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;
}View Code
{
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;
}View Code
相关文章推荐
- 将Dataset中的多个DataTable导入到一个Excel文件的多个Sheet中
- 如何从Excel文件中导入所有Sheet到DataTable中?
- 【C#.NET】将excel或将CSV文件中的sheet1导入到dataGridView1中 ,或者导入到DataTable,导入到DataSet
- 求教。将Excel文件导入DataTable中,然后绑定到GridView中。
- 把数据从DataTable导入到Excel文件里并创建表
- DataTable 对xml、excel、csv 对文件的导入和导出功能
- NPOI导入excel文件为DataTable,使用SqlBulkCopy添加到数据库表
- qtp:将excel数据导入DataTable并从第一行数据开始取值
- 用toad导入和导出excel(.xls)文件(表的数据)
- java导入Excel包含多张sheet表的.xls .xslx .txt三种后缀格式的文件
- Aras innovator: 怎样把excel文件导入到Aras数据库
- 从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:
- PHP导入Excel和导出数据为Excel文件
- 图解SSIS批量导入Excel文件(转)
- EXCEL文件导入DATAWINDOW
- Spring、SpringMVC、MyBatis、freeMaker框架下之Excel文件导入
- c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出
- 【Python】将excel文件导入mysql数据库
- ThinkPHP 3.2 + PHPExcel 导入导出文件 第三方类库不能用问题解决
- Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解