社区
C#
帖子详情
如何实现dataset导出到excel,并且能保证相应的效率。。
iyranly
2008-01-22 02:41:06
如何实现dataset导出到excel,并且能保证相应的效率。。 非常急,着急得很....解决立即给分...
...全文
90
3
打赏
收藏
如何实现dataset导出到excel,并且能保证相应的效率。。
如何实现dataset导出到excel,并且能保证相应的效率。。 非常急,着急得很....解决立即给分...
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
michaelwangwh
2008-01-22
打赏
举报
回复
加office的refrence,用xlapp,xlworksheet, cells[i][j]=datatable[i][j]
效率方面理论上用这样的方法了最快了,不清楚lz的效率指的什么?
iyranly
2008-01-22
打赏
举报
回复
不错,收藏!
沅江汐水
2008-01-22
打赏
举报
回复
/// <summary>
/// 导出数据
/// </summary>
/// <param name="dset">将要导出的DataSet,其中的每一个Table必须有一个明确的名字</param>
/// <param name="filepath">目的文件的路径,该数据库必须存在且允许internet来宾用户写入</param>
/// <param name="maxlenth">DataSet中字段的最大长度</param>
/// <returns></returns>
public static bool importToAccess( DataSet dset/*DataTable dt*/,string filepath,/*string tableName,*/int maxlenth)
{
bool ret = false;
if(!Path.GetExtension(filepath).ToLower().Equals(".mdb"))
return ret;
if(!File.Exists(filepath))
// File.Create(filepath);
{
throw new Exception("文件不存在!");
}
if(dset != null && dset.Tables.Count > 0)
{
//2008-01-16
//OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;User Id=admin;jet OleDB:Database Password=sva!@#$%^&*();Data Source=" + filepath);
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;User Id=admin;Data Source=" + filepath);
//2008-01-16
try
{
conn.Open();
for(int i = 0; i<dset.Tables.Count; i++)
{
try
{
OleDbCommand cmd = new OleDbCommand("Select * from " + dset.Tables[i].TableName/*tableName*/,conn);
cmd.ExecuteNonQuery();
cmd.CommandText = "Drop Table " + dset.Tables[i].TableName; /*tableName;*/
cmd.ExecuteNonQuery();
cmd.Dispose();
}
catch
{
}
string str = "Create Table " + /*tableName*/ dset.Tables[i].TableName + "(" ;
for(int j=0;j<dset.Tables[i].Columns.Count;j++)
{
str = str + "[" + dset.Tables[i].Columns[j].ColumnName + "] "; // + dt.Columns[i].DataType.ToString() + ",";
string type = dset.Tables[i].Columns[j].DataType.ToString();
switch(dset.Tables[i].Columns[j].DataType.ToString())
{
case "System.String":
str = str + "varchar(" + maxlenth + "),";
break;
case "System.Int32":
str = str + "int,";
break;
case "System.DateTime":
str = str + "DateTime,";
break;
default:
str =str+"varchar(" + maxlenth + "),";
break;
}
}
str = str.Substring(0,str.Length-1) + ")";
OleDbCommand o = new OleDbCommand(str,conn);
o.ExecuteNonQuery();
o.Dispose();
}
for(int i = 0;i<dset.Tables.Count;i++)
{
OleDbDataAdapter da = new OleDbDataAdapter();
OleDbCommand command = new OleDbCommand();
command.Connection = conn;
int col = dset.Tables[i].Columns.Count;
//int col = dt.Columns.Count;
string commandText = "Insert into " + dset.Tables[i].TableName /*tableName*/ + " values(";
ArrayList va = new ArrayList();
for(int j=0;j<col;j++)
{
va.Add(dset.Tables[i].Columns[j].ColumnName);
commandText = commandText + /*"@" + va[i].ToString()*/ "?" + ",";
}
commandText = commandText.Remove(commandText.LastIndexOf(","),1);
commandText = commandText + ")";
//command.CommandType = CommandType
command.CommandText = commandText;
for(int k=0;k<va.Count;k++)
{
OleDbParameter old = new OleDbParameter("@" + va[k].ToString(),OleDbType.Variant);
old.SourceColumn = dset.Tables[i].Columns[va[k].ToString()].ColumnName;
old.SourceVersion = DataRowVersion.Original;
command.Parameters.Add(old);
}
DataSet ds = new DataSet();
DataTable d = new DataTable();
d = dset.Tables[i].Clone();
// ds.Tables.Add(d);
for(int n=0;n<dset.Tables[i].Rows.Count;n++)
{
DataRow r = d.NewRow();
r.ItemArray = dset.Tables[i].Rows[n].ItemArray;
d.Rows.Add(r);
//
// command.Parameters
}
ds.Tables.Add(d);
da.InsertCommand = command;
da.Update(ds,ds.Tables[0].TableName);
command.Dispose();
da.Dispose();
}
ret = true;
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
//command.Dispose();
// da.Dispose();
conn.Close();
conn.Dispose();
}
}
return ret;
}
WinForm下
DataSet
导出
1、调用
Excel
直接打开
导出
结果 2、直接用块的方式写入
Excel
,提高了性能 3、数字型、日期型的数据能自动识别 4、设置单元格的格式用先列再行的方式,上万行记录也轻松对付。
Dataset
中多个表内容
导出
在一个
Excel
的多个Sheet中
Dataset
中多个表内容
导出
在一个
Excel
的多个Sheet中,
实现
了的代码整理
asp.net
实现
数据导入
导出
Excel
多Sheet表
asp.net
实现
数据导入
导出
到
Excel
中多Sheet的情况
sql2008
导出
到
excel
c#版sql2008数据
导出
到
excel
例子,c#版sql2008数据
导出
到
excel
例子。
C# 分Sheet
导出
Excel
文件
C# 分Sheet
导出
Excel
文件.可以包含多个DataTable。
C#
111,094
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章