您的位置:首页 > 编程语言 > C#

C#导出数据表为Excel文件

2017-01-10 17:46 288 查看
博文以导出Access数据库中的数据表为例,只要修改一下同样可以用于SQL Server数据库。

string filePath = "F:\\Book.xls";
string OleDbConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source = .\\Data\\Student.accdb;Jet OLEDB:Database Password = 123456";
OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
cnn.Open();
OleDbCommand cmd = new OleDbCommand("select count(*) from [Books]", cnn);
int num = (int)(cmd.ExecuteScalar());
//如果数据项的个数大于一个sheet表的最大行数,则拆分保存在多个sheet表中
if (num <= 65535)
{
// [Excel 8.0;database= excel名].[sheet名] 如果是新建sheet表不能加$,如果向sheet里插入数据要加$
// Excel 2003的sheet表最大行数65536,最大列数256。因为列头要占据一行,所以最多存储65535条数据
cmd = new OleDbCommand("select top 65535 ISBN as ISBN, Title as 书名, Author as 作者, RegisterTime as 登记时间 into [Excel 8.0;database=" + filePath + "].[书籍表] from Books order by RegisterTime desc", cnn);
cmd.ExecuteNonQuery();
}
else
{
int num2 = num, i = 1;
while (num2 > 0)
{
cmd = new OleDbCommand("select top 65535 * into [Excel 8.0;database=" + filePath + "].[书籍表" + i + "] from (select top " + num2 + " ISBN as ISBN, Title as 书名, Author as 作者, RegisterTime as 登记时间 from Books order by RegisterTime) order by 登记时间 desc", cnn);
cmd.ExecuteNonQuery();
num2 -= 65535;
i++;
}
}
cmd.Dispose();
cnn.Close();
cnn.Dispose();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息