将数据库的表数据存放在DataTable中,然后通过DataTable将数据导出到Excel中进行存放。
其中DataTable的定义如下:
//数据库连接
stringconnString = "Data Source=" + sqlServer.serverName + ";InitialCatalog=" + sqlServer.dataName + ";User ID=" + sqlServer.loginName+ "assword=" + sqlServer.loginPwd;
//通过SqlConnection进行数据库的连接
SqlConnection sqlConn = new SqlConnection(connString);
sqlConn.Open();
//定义查询语句
string outStr = "select* from table06";
// DataAdapter对象在DataSet与数据之间起桥梁作用,用于检索和保存数据
SqlDataAdapter sda = new SqlDataAdapter(outStr,sqlConn);
//使用DataSet进行数据读取
DataSet ds = new DataSet();
//通过DataAdapter对DataSet数据进行填充,table06是自定义的虚拟表名,调用select进行填充table06
sda.Fill(ds, "table06");//table06为虚拟表名,是否可以定义为别的表名?
//用DataSet的虚拟表table06对DataTable进行数据填充
System.Data.DataTabledt06 = ds.Tables["table06"];
通过DataTable获取到数据之后便可以通过自定义函数DataTabletoExcel进行数据的导出,将DataTable的数据导出到Excel中
具体代码如下:
/*
*函数名:DataTabletoExcel
*函数说明:将DataTable中的数据导出到Excel
*函数参数说明:
* tmpDataTable为存放需要导出的数据的DataTable
* savePath是导出文件需要保存的路径及文件名
*/
private void DataTabletoExcel(System.Data.DataTable tmpDataTable,stringsavePath)
{
if(tmpDataTable == null)
return;
introwNum = tmpDataTable.Rows.Count;//需要导出的数据的行数
intcolumnNum = tmpDataTable.Columns.Count;//需要导出的数据的列数
introwIndex = 1;//起始行为第二行
intcolumnIndex = 0;//起始列为第一列
Microsoft.Office.Interop.Excel.Range range;//Excel的格式设置
System.Reflection.Missing miss = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application xlApp =newMicrosoft.Office.Interop.Excel.ApplicationClass();
xlApp.DisplayAlerts = true;// 在程序执行过程中使出现的警告框显示
xlApp.SheetsInNewWorkbook = 1;
Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
foreach(DataColumn dcintmpDataTable.Columns) //将datatable的列名导入excel表的第一行
{
columnIndex ++;
xlApp.Cells[rowIndex,columnIndex] = dc.ColumnName;
}
//将数据写入到Excel表中
for(int i = 0; i < rowNum; i++)
{
rowIndex++;
columnIndex = 0;
for(int j = 0; j < columnNum; j++)
{//按行写入数据
columnIndex++;
range =(Microsoft.Office.Interop.Excel.Range)xlApp.Cells[rowIndex,columnIndex];
range.NumberFormatLocal = "@";//写入到表中的数据格式以文本形式存在
xlApp.Cells[rowIndex,columnIndex] = tmpDataTable.Rows[j].ToString();
}
}
//数据保存
xlBook.SaveAs(savePath,miss,miss,miss,miss,miss,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,miss,miss,miss,miss,miss);
xlBook.Close(false,miss,miss);
xlApp.quit();
} |