Excel、記事本數(shù)據(jù)導(dǎo)入到數(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")
{
//這里是放返回消息的,改為對應(yīng)放消息的方式就行了,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 + "/");//圖片存儲文件夾路徑,需要按照不同的需要進行相應(yīng)的修改
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的架構(gòu),包括各個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;
}
相關(guān)文章
.NET 6開發(fā)TodoList應(yīng)用之實現(xiàn)API版本控制
API接口版本管理,對于一些規(guī)模稍大的企業(yè)應(yīng)用來說,是經(jīng)常需要關(guān)注的一大需求。本文將介紹在.NET 6開發(fā)中如何實現(xiàn)API版本控制,感興趣的可以了解一下2022-01-01
利用ASP.NET MVC+Bootstrap搭建個人博客之打造清新分頁Helper(三)
這篇文章主要介紹了利用ASP.NET MVC+Bootstrap搭建個人博客之打造清新分頁Helper(三)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06
.Net?ORM?訪問?Firebird?數(shù)據(jù)庫的方法
這篇文章簡單介紹了在?.net6.0?環(huán)境中使用?FreeSql?對?Firebird?數(shù)據(jù)庫的訪問,目前?FreeSql?還支持.net?framework?4.0?和?xamarin?平臺上使用,對.Net?ORM?訪問?Firebird?數(shù)據(jù)庫相關(guān)知識感興趣的朋友一起看看吧2022-07-07
詳解Spring Boot 中使用 Java API 調(diào)用 lucene
這篇文章主要介紹了詳解Spring Boot 中使用 Java API 調(diào)用 lucene,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
ASP.NET(C#)實現(xiàn)一次性動態(tài)上傳多張圖片的代碼(多個文件)
我們就要讓這些文件上傳框動態(tài)添加,下面我以我做的一個圖庫管理中的上傳圖片的功能為例2011-10-10
VS2010/VS2013項目創(chuàng)建 ADO.NET連接mysql/sql server詳細步驟
這篇文章主要介紹了VS2010/VS2013項目創(chuàng)建,及ADO.NET連接mysql/sql server詳細步驟,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10

