度量快速开发平台-业界最好的全功能软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 102|回复: 2

[分享] 将DataTable中的数据导出到Excel

[复制链接]

542

主题

5919

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
发表于 2018-1-8 15:39:56 | 显示全部楼层 |阅读模式
将数据库的表数据存放在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();

       }
回复

使用道具 举报

542

主题

5919

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
 楼主| 发表于 2018-1-8 15:40:21 | 显示全部楼层
回复 支持 反对

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
发表于 2018-1-8 17:34:54 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2018-7-18 16:53 , Processed in 0.257211 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表