将手机号批量导入数据库。思路:先将要导入的文件传上项目里,然后读取文件的每行数据并插入数据库,操作完后再将上传的文件删除
文件示例:
Excel:
记事本:
 
前台代码:
          <div class="tab-content detail" id="divSecond" runat="server" >
<fieldset >
<p>
<label>
选择文件</label>
<asp:FileUpload ID="FileUpload1" runat="server" /><asp:RequiredFieldValidator
ID="RequiredFieldValidator1" runat="server" ErrorMessage="请选择要提交的Excel文件" ControlToValidate="FileUpload1"></asp:RequiredFieldValidator>
</p>
<p>
<label>文件示例</label><img src="../images/ex_excel.jpg" />
</p>
</fieldset>
<div class="clear"></div>
<div class="clear"></div>
<div style="margin-left:200px">
<asp:Button ID="btnExcel" runat="server" Text="提 交" CssClass="button"
onclick="btnExcel_Click" />
&nbsp;&nbsp;&nbsp;
<input class="button" type="button" value="返 回" onclick="javascript:window.location.href='CartList.aspx'" />
</div> </div> <div class="tab-content detail" id="divThird" runat="server" > <fieldset >
<p>
<label>
选择文件</label>
<asp:FileUpload ID="FileUpload2" runat="server" /> <asp:RequiredFieldValidator
ID="RequiredFieldValidator2" runat="server" ErrorMessage="请选择要提交的tTXT文件"
ControlToValidate="FileUpload2"></asp:RequiredFieldValidator>
</p>
<p>
<label>文件示例</label><img src="../images/ex_txt.jpg" />
</p>
</fieldset> <div class="clear"></div> <div class="clear"></div> <div style="margin-left:200px">
<asp:Button ID="btnNotepad" runat="server" Text="提 交" CssClass="button"
onclick="btnNotepad_Click" />
&nbsp;&nbsp;&nbsp;
<input class="button" type="button" value="返 回" onclick="javascript:window.location.href='CartList.aspx'" />
</div>
</div>

后台代码

   //Excel上传
protected void btnExcel_Click(object sender, EventArgs e)
{
string backStr= UploadFile(FileUpload1, "Excel",);
if (backStr == "-1")
{
//这里是放返回消息的,改为对应放消息的方式就行了,Js这个类就不上传了
//如  Response.Write("<script>alert('请选择要提交的Excel文件')</script>");
Js.ShowSureMsgBox(this.Page,"请选择要提交的Excel文件");
return;
}
else if (backStr == "-2")
{
Js.ShowSureMsgBox(this.Page, "请选择.xls或.xlsx类型文件");
return;
}
else
{
string url = backStr; //绝对路径
DataTable dt = ExcelToDataSet(url); if (dt.Rows.Count > )
{  for (int i = ; i < dt.Rows.Count; i++)
                     {
                          //读取每行数据         
                           string phoneNum= dt.Rows[i][].ToString();            
                     }  
}
else
{ Js.ShowSureMsgBox(this.Page, "文件内容为空");
}
File.Delete(url); //删除上传的文件 }
} //记事本上传
protected void btnNotepad_Click(object sender, EventArgs e)
{
string backStr = UploadFile(FileUpload2, "TXT",);
if (backStr == "-1")
{
Js.ShowSureMsgBox(this.Page, "请选择要提交的TXT文件");
return;
}
else if (backStr == "-2")
{
Js.ShowSureMsgBox(this.Page, "请选择.txt类型文件");
return;
}
else
{
string url = backStr; //绝对路径
DataTable dt = ReadTXT(url);
if (dt.Rows.Count > )
{
for (int i = ; i < dt.Rows.Count; i++)
{
//读取每行数据         
string phoneNum= dt.Rows[i][].ToString();
}
}
else
{
Js.ShowSureMsgBox(this.Page, "文件内容为空");
}
File.Delete(url); //删除上传的文件 }
} //上传文件
public string UploadFile(FileUpload FileUploadName, string varfilename,int type)
{ if (FileUploadName.HasFile)//判断是否有上传文件
{
string fileExtension = System.IO.Path.GetExtension(FileUploadName.FileName).ToLower();//获取文件的后缀名
if (type == )
{
if (fileExtension != ".xls" && fileExtension != ".xlsx")
{
return "-2";
}
}
if (type == )
{
if (fileExtension != ".txt")
{
return "-2";
}
}
string fpath = System.Web.HttpContext.Current.Server.MapPath("/Manager/Uploadfiles/" + varfilename + "/");//图片存储文件夹路径,需要按照不同的需要进行相应的修改 if (!Directory.Exists(fpath))//查看存储路径的文件是否存在
{
Directory.CreateDirectory(fpath); //创建文件夹,并上传文件
}
string time = DateTime.Now.ToString("yyyyMMddhhmmssfff");//使用时间定义上传图片的名字
string picturename = time + fileExtension; string newFilePath = fpath + picturename; //文件保存路径 FileUploadName.SaveAs(newFilePath); return newFilePath; //绝对路径 }
else
{
return "-1"; //没有文件
} } //读取Excel数据
public DataTable ExcelToDataSet(string filename)
{

//string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + filename + ";Extended Properties=Excel 8.0";
 //解决Excel混合类型问题。参考 http://blog.csdn.net/ranshouxu/article/details/6115039              
string strCon = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + filename + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";  
OleDbConnection conn = new OleDbConnection(strCon); conn.Open(); //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等  DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //包含excel中表名的字符串数组 string[] strTableNames = new string[dtSheetName.Rows.Count]; for (int k = ; k < dtSheetName.Rows.Count; k++)
{ strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString(); } OleDbDataAdapter myCommand = null; DataTable dt = new DataTable(); //从指定的表明查询数据,可先把所有表明列出来供用户选择 string strExcel = "select * from [" + strTableNames[] + "]"; myCommand = new OleDbDataAdapter(strExcel, strCon); myCommand.Fill(dt);
conn.Close(); return dt; } //读取记事本数据
public DataTable ReadTXT(string dirTXT)
{
//StreamReader objReader = new StreamReader(dirTXT);
// 路径,编码
  StreamReader objReader = new StreamReader(dirTXT, System.Text.Encoding.GetEncoding("GB2312")); //解决中文问题。
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("DN", System.Type.GetType("System.String")); string sLine = ""; while (sLine != null)
{
sLine = objReader.ReadLine();
if (sLine != null && !sLine.Equals(""))
{
DataRow dr = dt.NewRow();
dr[] = sLine;
dt.Rows.Add(dr);
}
} objReader.Close();
return dt;
}

感谢楼主的提醒,关于Excel是混合类型时造成数据丢失(有些数据行读取为空)的问题和记事本读取中文乱码问题,经过网上搜索已解决了,如果发现还有哪些不足的欢迎提点,有解决方法的贴出来分享~~~谢谢大家啦

 

Excel、记事本数据导入到数据库的更多相关文章

  1. 把Excel的数据导入到数据库

    将Excel作为数据源,将数据导入数据库,是SSIS的一个简单的应用,下图是示例Excel,数据列是code和name 第一部分,Excel中的数据类型是数值类型 1,使用SSDT创建一个packag ...

  2. Excel表格数据导入Mysql数据库的方法

    1.使用Navicat 连接需要导入的数据库. 2.excel 列的名字最好和数据库的名字一致,便于我们直观的查看好理解.   第一步,先创建好表,和准备好对应的excel文件.在Navicat 中选 ...

  3. Excel表格数据导入MySQL数据库

    有时候项目需要将存在表格中的批量数据导入数据库,最近自己正好碰到了,总结一下: 1.将excel表格另存为.csv格式文件,excel本身的.xlsx格式导入时可能会报错,为了避免不必要的格式错误,直 ...

  4. Java版将EXCEL表数据导入到数据库中

    1.采用第三方控件JXL实现 try { //实例化一个工作簿对象 Workbook workBook=Workbook.getWorkbook(new File("F://qzlx.xls ...

  5. java读取excel文件数据导入mysql数据库

    这是我来公司的第二周的一个小学习任务,下面是实现过程: 1.建立maven工程(方便管理jar包) 在pom.xml导入 jxl,mysql-connector 依赖 可以在maven仓库搜索 2.建 ...

  6. 如何把 excel 的数据导入到数据库里面去

    1. 把 excel 另存为 .csv 格式 2. 用 Notepad 打开 .csv 文件, 第一行就是全部的字段 3. 创建表结构 create table yu_rt_01 as select ...

  7. 将excel的数据导入到数据库后都乱码了是怎么回事

    将excel内容首先保存成csv格式,然后在MySQL数据库中导入,结果汉字出现了乱码. 解决过程: 1.csv文件以txt形式打开,另存为,选择utf-8编码. 2.数据库,设置,collation ...

  8. 将 excel文件数据导入MySQL数据库中

    第一步:先将Excel文件另存为文本文件(制表符分割) 第二步:将生成的txt文件另存,并修改编码格式utf8; 第三步:将文件放到指定位置,或自己想要的位置: G:\city.txt 第四步:避免创 ...

  9. 将Excel中数据导入数据库(二)

    在上篇文章中介绍到将Excel中数据导入到数据库中,但上篇文章例子只出现了nvachar类型,且数据量很小.今天碰到将Excel中数据导入数据库中的Excel有6419行,其中每行均有48个字段,有i ...

随机推荐

  1. JS学习笔记 - 面向对象 - 原型

    <script> var arr1 = new Array(12, 55, 34, 78, 676); var arr2 = new Array(12, 33, 1) Array.prot ...

  2. springboot 使用FreeMarker模板(转)

    在spring boot中使用FreeMarker模板非常简单方便,只需要简单几步就行: 1.引入依赖: <dependency> <groupId>org.springfra ...

  3. Storm新特性之Flux

    Storm新特性之Flux Flux是Storm版本号0.10.0中的新组件,主要目的是为了方便拓扑的开发与部署.原先在开发Storm拓扑的时候整个拓扑的结构都是硬编码写在代码中的,当要对其进行改动时 ...

  4. 每日技术总结:Better-scroll应用于弹出层内容滚动

    一.Better-scroll在项目中的应用 Better-scroll这款滚动插件还是很好用的,通常不会有什么问题.但偶尔总会出点意外.今天再次使用better-scroll,记录一下这次顺利的过程 ...

  5. [Nuxt] Update State with Vuex Actions in Nuxt.js

    You can conditionally add classes to Vue.js templates using v-bind:class. This will help display the ...

  6. 全端project师必备技能汇总

    首先,看一张前端知识结构图:  (原文: ithomer) 图片的形式具有诸多的不便.缺失源图的我们.无法为此图贡献些什么,随着时间的迁移,也许有些技术点会发生改变.所以有了这个GitHub项目.我们 ...

  7. XML Parser Errors See Details for more Information XML Parser Error on line 1: Document root ele

    1.错误描写叙述 XML Parser Errors See Details for more Information XML Parser Error on line 1: Document roo ...

  8. 【Codeforces Round #185 (Div. 2) C】The Closest Pair

    [链接] 链接 [题意] 让你构造n个点,去hack一种求最近点对的算法. [题解] 让x相同. 那么那个剪枝就不会起作用了. [错的次数] 在这里输入错的次数 [反思] 在这里输入反思 [代码] # ...

  9. python高级学习目录

    1. Linux介绍.命令1.1. 操作系统(科普章节) 1.2. 操作系统的发展史(科普章节) 1.3. 文件和目录 1.4. Ubuntu 图形界面入门 1.5. Linux 命令的基本使用 1. ...

  10. [Ramda] Handle Branching Logic with Ramda's Conditional Functions

    When you want to build your logic with small, composable functions you need a functional way to hand ...