度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1741|回复: 2
打印 上一主题 下一主题

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

[复制链接]

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
跳转到指定楼层
楼主
发表于 2020-6-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();

       }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
沙发
 楼主| 发表于 2020-6-8 15:40:21 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
板凳
发表于 2020-6-8 17:34:54 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-28 06:36 , Processed in 0.131124 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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