Excel、記事本數(shù)據(jù)導入到數(shù)據(jù)庫的實現(xiàn)方法
文件示例:
Excel:
記事本:
前臺代碼:
<div class="tab-content detail" id="divSecond" runat="server" visible="false">
<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" visible="false">
<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",1);
if (backStr == "-1")
{
//這里是放返回消息的,改為對應放消息的方式就行了,Js這個類就不上傳了
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 > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
//讀取每行數(shù)據(jù)
string phoneNum= dt.Rows[i][0].ToString();
}
}
else
{
Js.ShowSureMsgBox(this.Page, "文件內(nèi)容為空");
}
File.Delete(url); //刪除上傳的文件
}
}
//記事本上傳
protected void btnNotepad_Click(object sender, EventArgs e)
{
string backStr = UploadFile(FileUpload2, "TXT",2);
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 > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
//讀取每行數(shù)據(jù)
string phoneNum= dt.Rows[i][0].ToString();
}
}
else
{
Js.ShowSureMsgBox(this.Page, "文件內(nèi)容為空");
}
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 == 1)
{
if (fileExtension != ".xls" && fileExtension != ".xlsx")
{
return "-2";
}
}
if (type == 2)
{
if (fileExtension != ".txt")
{
return "-2";
}
}
string fpath = System.Web.HttpContext.Current.Server.MapPath("/Manager/Uploadfiles/" + varfilename + "/");//圖片存儲文件夾路徑,需要按照不同的需要進行相應的修改
if (!Directory.Exists(fpath))//查看存儲路徑的文件是否存在
{
Directory.CreateDirectory(fpath); //創(chuàng)建文件夾,并上傳文件
}
string time = DateTime.Now.ToString("yyyyMMddhhmmssfff");//使用時間定義上傳圖片的名字
string picturename = time + fileExtension;
string newFilePath = fpath + picturename; //文件保存路徑
FileUploadName.SaveAs(newFilePath);
return newFilePath; //絕對路徑
}
else
{
return "-1"; //沒有文件
}
}
//讀取Excel數(shù)據(jù)
public DataTable ExcelToDataSet(string filename)
{
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + filename + ";Extended Properties=Excel 8.0";
OleDbConnection conn = new OleDbConnection(strCon);
conn.Open();
//返回Excel的架構,包括各個sheet表的名稱,類型,創(chuàng)建時間和修改時間等
DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
//包含excel中表名的字符串數(shù)組
string[] strTableNames = new string[dtSheetName.Rows.Count];
for (int k = 0; k < dtSheetName.Rows.Count; k++)
{
strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
}
OleDbDataAdapter myCommand = null;
DataTable dt = new DataTable();
//從指定的表明查詢數(shù)據(jù),可先把所有表明列出來供用戶選擇
string strExcel = "select * from [" + strTableNames[0] + "]";
myCommand = new OleDbDataAdapter(strExcel, strCon);
myCommand.Fill(dt);
conn.Close();
return dt;
}
//讀取記事本數(shù)據(jù)
public DataTable ReadTXT(string dirTXT)
{
StreamReader objReader = new StreamReader(dirTXT);
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[0] = sLine;
dt.Rows.Add(dr);
}
}
objReader.Close();
return dt;
}
相關文章
asp.net頁面SqlCacheDependency緩存實例
這篇文章主要介紹了asp.net頁面SqlCacheDependency緩存實例,以一個完整實例來展現(xiàn)asp.net中緩存技術的使用方法,需要的朋友可以參考下2014-08-08.net 像hao123的快捷郵箱登陸的實現(xiàn)代碼
.net實現(xiàn)的像hao123的快捷郵箱登陸的代碼,需要的朋友可以參考下。2010-03-03服務端拼接json數(shù)據(jù)格式的正確寫法(Append方式)
我們通常會在服務端拼接json數(shù)據(jù)返回給客戶端,第一種AppendFormat的方式拼接,這種方法是不行的,正確的拼接方式是Append的方式2013-07-07URLRewriter最簡單入門介紹 URLRewriter相關資源
配置好后,查看日志看到的狀態(tài)都是200,IIS直接認為這個文件是存在的了, 而不是301,或302,這在某些情況下可能會不適用,比如:搜索引擎優(yōu)化時目錄或文件調整。2008-07-07Asp.net內(nèi)置對象之Server對象(概述及應用)
Server對象提供對服務器上的方法和屬性的訪問以及進行HTML編碼的功能,本文主要圍繞server對象介紹詳細功能及常用屬性和主要方法,感興趣的朋友可以了解下,或許對你學習server對象有所幫助2013-02-02基于.net4.0實現(xiàn)IdentityServer4客戶端JWT解密
這篇文章主要為大家詳細介紹了基于.net4.0實現(xiàn)IdentityServer4客戶端JWT解密,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09