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" />
-
- <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" />
-
- <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、记事本数据导入到数据库的更多相关文章
- 把Excel的数据导入到数据库
将Excel作为数据源,将数据导入数据库,是SSIS的一个简单的应用,下图是示例Excel,数据列是code和name 第一部分,Excel中的数据类型是数值类型 1,使用SSDT创建一个packag ...
- Excel表格数据导入Mysql数据库的方法
1.使用Navicat 连接需要导入的数据库. 2.excel 列的名字最好和数据库的名字一致,便于我们直观的查看好理解. 第一步,先创建好表,和准备好对应的excel文件.在Navicat 中选 ...
- Excel表格数据导入MySQL数据库
有时候项目需要将存在表格中的批量数据导入数据库,最近自己正好碰到了,总结一下: 1.将excel表格另存为.csv格式文件,excel本身的.xlsx格式导入时可能会报错,为了避免不必要的格式错误,直 ...
- Java版将EXCEL表数据导入到数据库中
1.采用第三方控件JXL实现 try { //实例化一个工作簿对象 Workbook workBook=Workbook.getWorkbook(new File("F://qzlx.xls ...
- java读取excel文件数据导入mysql数据库
这是我来公司的第二周的一个小学习任务,下面是实现过程: 1.建立maven工程(方便管理jar包) 在pom.xml导入 jxl,mysql-connector 依赖 可以在maven仓库搜索 2.建 ...
- 如何把 excel 的数据导入到数据库里面去
1. 把 excel 另存为 .csv 格式 2. 用 Notepad 打开 .csv 文件, 第一行就是全部的字段 3. 创建表结构 create table yu_rt_01 as select ...
- 将excel的数据导入到数据库后都乱码了是怎么回事
将excel内容首先保存成csv格式,然后在MySQL数据库中导入,结果汉字出现了乱码. 解决过程: 1.csv文件以txt形式打开,另存为,选择utf-8编码. 2.数据库,设置,collation ...
- 将 excel文件数据导入MySQL数据库中
第一步:先将Excel文件另存为文本文件(制表符分割) 第二步:将生成的txt文件另存,并修改编码格式utf8; 第三步:将文件放到指定位置,或自己想要的位置: G:\city.txt 第四步:避免创 ...
- 将Excel中数据导入数据库(二)
在上篇文章中介绍到将Excel中数据导入到数据库中,但上篇文章例子只出现了nvachar类型,且数据量很小.今天碰到将Excel中数据导入数据库中的Excel有6419行,其中每行均有48个字段,有i ...
随机推荐
- NSAttributeString创建各种文字效果
NSDictionary *attributes =@{ NSForegroundColorAttributeName: [UIColorredColor], NSFontAttributeName: ...
- Machine Learning With Spark学习笔记(提取10万电影数据特征)
注:原文中的代码是在spark-shell中编写运行的,本人的是在eclipse中编写运行,所以结果输出形式可能会与这本书中的不太一样. 首先将用户数据u.data读入SparkContext中.然后 ...
- 挖一挖不经常使用到而又非常有用的重载-Split
Split这个基本上全部的程序开发者都用到,一般使用单字符和长字符串拆分字符串的较多.事实上另一个重载很好用.那就是多种组合字符来进行拆分. 比如: "aaaaaaaaaa{@}bbbbbb ...
- Android 调用系统邮件,发送邮件到指定邮箱
在项目中,最后有一个联络我们,要求是点击号码还有邮箱地址能够发送邮件,这时候解决的方案其实有两种,一种是调用系统发邮件的软件,可以添加邮箱账号就可以发送邮件:第二种是使用javamail来发送邮件.在 ...
- Eclipse 出错 Error:Could not create the Java Virtual Machine Error:A fatal exception has occurred
提示如下: scala compile server. error:could not create the java machine.Error: A fatal exception has occ ...
- swift项目第十天:网络请求工具类的封装
import UIKit /* 必须先导入头文件:import AFNetworking */ import AFNetworking //MARK:-0:定义枚举:以枚举定义请求网络的get和pos ...
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
摘要: 本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠 ...
- MFC切换图片防止闪烁
处理WM_ERASEBKGND消息,在消息处理函数中return TRUE;
- 【3005】拦截导弹问题(noip1999)
Time Limit: 3 second Memory Limit: 2 MB 某国为了防御帝国的导弹袭击,开发出一种导弹拦截系统,但是这种拦截系统有一个缺陷:虽然他的第一发炮弹能达到任意的高度,但是 ...
- [Angular Unit Testing] Debug unit testing -- component rendering
If sometime you want to log out the comonent html to see whether the html render correctly, you can ...