问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C#Excel导入多条数据到数据库,怎么解决性能问题可以快速导入

发布网友 发布时间:2022-04-10 07:48

我来回答

4个回答

热心网友 时间:2022-04-10 09:18

public static DataSet GetDataSet(string FilePath)
{
string OledbConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + FilePath + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");
OleDbConnection conn = new OleDbConnection(OledbConnectionString);
ArrayList SheetNameList = new ArrayList();
try
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
DataTable dtExcelSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
string SheetName = "";
for (int i = 0; i < dtExcelSchema.Rows.Count; i++)
{
SheetName = dtExcelSchema.Rows[i]["TABLE_NAME"].ToString();
SheetNameList.Add(SheetName);
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
DataSet dsExcel = new DataSet(); try
{
string strSql = ""; for (int i = 0; i < SheetNameList.Count; i++)
{
strSql = "select * from [" + (string)SheetNameList[i] + "]";
OleDbDataAdapter oleExcelDataAdapter = new OleDbDataAdapter(strSql, conn);
DataTable dtExcel = new DataTable((string)SheetNameList[i]);
oleExcelDataAdapter.Fill(dtExcel);
dsExcel.Tables.Add(dtExcel);
}
return dsExcel;
}
catch (Exception ex)
{
throw ex;
}
}这个方法就是从EXCEL文件读取数据转换为DataSet 下面一段时调用的时候要注意的,写要在服务器端保存一下上传的EXCEL,然后再调用 string filePath = "";
DataSet ds = new DataSet();
if (System.IO.Path.GetExtension(FileUpload1.FileName) != ".xls")
{
ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alter('hao')</script>");
return;
}
else
{
filePath = "D:\\" + FileUpload1.FileName;
FileUpload1.SaveAs(filePath);
string fileName = FileUpload1.FileName;
int start = fileName.IndexOf('.');
fileName = fileName.Substring(0, start);
ds = GetDataSet(filePath);
}

热心网友 时间:2022-04-10 10:36

你优化下SQL。对于excel生成的数据,如果没有什么好方法进行控制,那么原始生成的dt就要做好控制,不相关的数据一律CUT,外键查询的数据如果有可能的话,尽量放在一个临时表中,提前抽取好,C#中对于大数据量进行FOR循环是可以的,但是不要嵌套,超过2层就会相当慢,因为你要读取数据库和excel表格,工作量相当大。所以前期的DT一定要准备好,尽量一个FOR搞定。

热心网友 时间:2022-04-10 12:10

在我做的那么多Excel导入问题当中,都是按条读取Excel中的数据,然后插入到数据库中。一般情况下,没有多大的性能问题。

热心网友 时间:2022-04-10 14:02

你可以考虑批次提交,不要针对没一条数据都进行提交。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
振宇教育创始人简介 北京金振宇科贸有限公司怎么样? 中农振宇(北京)生物技术有限公司怎么样? 标准单元库设计流程 标准单元库的介绍 怎么恢复已拉下黑名单的QQ好友 把qq好友加入黑名单怎么恢复 若在衡水滏阳中学复读已经交费,又被其他大学录取,所交费怎么处理? 衡水一中入学条件 衡水中学复读生什么时候报名缴费啊? 我在建行银行买的基金我买的基金的公司网站是什么?光大优势360007 光大优势基金的持仓明细?? 光大优势(360007)华安策略优选基金(040008)那个更适补仓 2007年买的光大优势基金360007买了5000元现在赎回还有多少钱? 光大优势360007,现在赔将近三千了,抛?等? 360007光大优势是分红基金吗吗? 光大优势360007 360007光大优势 创维65A10怎么用全民K歌唱歌? 创维电视怎样才能用手机K歌 创维酷开电视怎么才能K歌 保险都是骗人的,这句话到底对不对呢? 创维酷开液晶电视 怎么唱歌? 创维5t电视可以插话筒唱歌吗? 保险都是骗人的吗? 新买的创维42酷开电视,怎么唱歌? 为什么很多人都说保险是骗人的? 内务大比武怎么摆凉席 华南理工大学的师兄师姐请进 在广州第六十五中学住宿,需带什么? 恒乐优自行车质量怎么样? 恒优打火机散件是不是真的?急急急! 商丘恒乐家用电器有限公司怎么样? 张家港恒乐新型建筑材料有限公司怎么样? 自行车碟刹与V刹的区别以及优缺点 柠檬,红花,绿茶可以混合喝吗 红花能不能用柠檬水泡 枸杞,柠檬和红花泡茶有什么好处 金莲花、玫瑰花、枸杞、红花、柠檬片、绿茶一起泡饮有药性冲突没有 玫瑰薄荷枸杞红枣红花柠檬可以搭配花茶吗 请问公务员科员晋升副主任科员的基本条件? 公务员科员晋升副主任的基本条件? 十个月宝宝拉肚子用穴位贴可以贴肚脐眼吗 一般情况,科员多少年可以进副主任科员 宝宝八个月,这两天受凉有点拉肚子,稀稀拉拉的,可以用丁桂儿脐贴吗? 普通科员的晋级之路有多难? 我搜不到自己的QQ号,是被腾讯限制了吗,怎么解决 全国大专院校排名? 有网贷逾期能出国去旅游玩吗 网贷逾期没还可以出国旅游吗