asp如何导入excel内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp如何导入excel内容相关的知识,希望对你有一定的参考价值。

由于产品比较多,想求用asp实现excel导入access的办法,

DataSet _Table = GetTableName(Server.MapPath(@"upload/" + Request.Cookies["sa"].Value + "/" + this.ListBox1.SelectedValue), this.DropDownList1.SelectedValue); //首先获取EXCEL文件路径
string[] list = Request["checkbox"].Split(",".ToCharArray()); 要导入的列,代码不贴了
string CompanyName = string.Empty, Person_in_charge = string.Empty, Mobile = string.Empty, Phone = string.Empty, Fax = string.Empty, E_mail = string.Empty, Address = string.Empty, IMQQ = string.Empty, AliWW = string.Empty, Website = string.Empty;
if (_Table.Tables[0].Rows.Count > 0)

for (int i = 0; i != _Table.Tables[0].Rows.Count; i++)/

for (int j = 0; j < list.Length; j++)/判断每个列的数据,然后处理

string[] arr = list[j].ToString().Split("|".ToCharArray());
if (Request[list[j].ToString()] == "CompanyName")

CompanyName = CompanyName + _Table.Tables[0].Rows[i][arr[1].ToString()].ToString();

if (Request[list[j].ToString()] == "Person_in_charge")

Person_in_charge = Person_in_charge + _Table.Tables[0].Rows[i][arr[1].ToString()].ToString();

if (Request[list[j].ToString()] == "Mobile")

Mobile = Mobile + _Table.Tables[0].Rows[i][arr[1].ToString()].ToString();

if (Request[list[j].ToString()] == "Phone")

Phone = Phone + _Table.Tables[0].Rows[i][arr[1].ToString()].ToString();

if (Request[list[j].ToString()] == "Fax")

Fax = Fax + _Table.Tables[0].Rows[i][arr[1].ToString()].ToString();

if (Request[list[j].ToString()] == "E-mail")

E_mail = E_mail + _Table.Tables[0].Rows[i][arr[1].ToString()].ToString();

if (Request[list[j].ToString()] == "Address")

Address = Address + _Table.Tables[0].Rows[i][arr[1].ToString()].ToString();

if (Request[list[j].ToString()] == "IMQQ")

IMQQ = IMQQ + _Table.Tables[0].Rows[i][arr[1].ToString()].ToString();

if (Request[list[j].ToString()] == "AliWW")

AliWW = AliWW + _Table.Tables[0].Rows[i][arr[1].ToString()].ToString();

if (Request[list[j].ToString()] == "Website")

Website = Website + _Table.Tables[0].Rows[i][arr[1].ToString()].ToString();


db.Update_Sql("INSERT INTO Customers([sid],[s_dep],[CompanyName],[Person_in_charge],[Mobile],[Phone],[Fax],[E-mail],[Address],[IMQQ],[AliWW],[Website],[Industry])VALUES(\'" + Request.Cookies["sa"].Value + "\'," + Request.Cookies["dep"].Value + ",\'" + CompanyName + "\',\'" + Person_in_charge + "\',\'" + Mobile + "\',\'" + Phone + "\',\'" + Fax + "\',\'" + E_mail + "\',\'" + Address + "\',\'" + IMQQ + "\',\'" + AliWW + "\',\'" + Website + "\'," + this.DropDownList2.SelectedValue + ")");
CompanyName = ""; Person_in_charge = ""; Mobile = ""; Phone = ""; Fax = ""; E_mail = ""; Address = ""; IMQQ = ""; AliWW = "";
this.Label3.Text = "导入成功!";
参考技术A 你可以讲EXCEL另存为以Tab隔开形式的TXT文件
然后SQL语句里面有一条是直接将TXT文件导入到指定表格里面的
例如:load data infile 'E:/mysql_LOG/Temporary.txt' into table table_name fields terminated by '\t' lines terminated by '\r\n' IGNORE 1 LINES

fields terminated by '\t' 代表以Tab隔开你的列

lines terminated by '\r\n' 代表以 '\r\n'为一行换行

IGNORE 1 LINES 代表语句跳过文本第一行开始插入

其他的详细的语法你可以百度一下
参考技术B 用 组件 把EXCEL 数据读取出来,然后,循环添加 参考技术C 一、直接导入法
1.启动Access,新建一数据库文件。
2.在“表”选项中,执行“文件→获取外部数据→导入”命令,打开“导入”对话框。
3.按“文件类型”右侧的下拉按钮,选中“Microsoft Excel(.xls)”选项,再定位到需要转换的工作簿文件所在的文件夹,选中相应的工作簿,按下“导入”按钮,进入“导入数据表向导”对话框(图1)。
4.选中需要导入的工作表(如“工程数据”),多次按“下一步”按钮作进一步的设置后,按“完成”按钮。
注意:如果没有特别要求,在上一步的操作中直接按“完成”按钮就行了。
5.此时系统会弹出一个导入完成的对话框(图1的中部),按“确定”按钮。
二、建立链接法

  1.启动Access,新建一数据库文件。

  2.在“表”选项中,执行“文件→获取外部数据→链接表”命令,打开“链接”对话框。

  3.以下操作基本与上述“直接导入法”相似,在此不再赘述,请大家自行操练。

  注意:“直接导入法”和“建立链接法”均可以将Excel数据转换到Access中,两者除了在Access中显示的图标不同(图2)外,最大的不同是:前者转换过来的数据与数据源脱离了联系,而后者转换过来的数据会随数据源的变化而自动随时更新。

  至此,数据就从Excel中导入到Access中。

使用 Asp.net 将 Excel 导入 DataTable

【中文标题】使用 Asp.net 将 Excel 导入 DataTable【英文标题】:import Excel to DataTable with Asp.net 【发布时间】:2016-04-12 01:47:21 【问题描述】:

当我使用excel表导入数据表时,需要同时导入SID、CREATE_DATETIME、MODIFY_DATETIME、CREATOR_SID(actorSId)...

但是在导入之后我只是得到了 excel 数据。那么如何同时导入呢?

我的代码在这里;

 private void BindData(string strConn)

    OleDbConnection objConn = new OleDbConnection(strConn);
    objConn.Open();

    // Get the data table containg the schema guid.  
    DataTable dt = null;
    dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    objConn.Close();

    //ISystemId SID

    if (dt.Rows.Count > 0)
    
         // Bind the sheets to the Grids  
        foreach (DataRow row in dt.Rows)
        
            DataTable dt_sheet = null;

            dt_sheet = getSheetData(strConn, row["TABLE_NAME"].ToString());

        
    


private DataTable getSheetData(string strConn, string sheet)

    string sid = Convert.ToString(new SystemId());
    string Ctime = Convert.ToDateTime(DateTime.Now).ToString("yyyyMMddhhmmss");
    string Mtime = Convert.ToDateTime(DateTime.Now).ToString("yyyyMMddhhmmss");
    string actorSId = Convert.ToString(WebPage.CurrentSysUserSId);
    string query = "select * from [" + sheet + "]";
    OleDbConnection objConn;
    OleDbDataAdapter oleDA;
    DataTable dt = new DataTable();
    dt.Columns.Add("SID", typeof(string));
    dt.Columns.Add("CREATE_DATETIME", typeof(string));
    dt.Columns.Add("MODIFY_DATETIME", typeof(string));
    dt.Columns.Add("CREATOR_SID", typeof(string));
    dt.Columns.Add("MODIFIER_SID", typeof(string));
    dt.Columns.Add("MARK_DELETED", typeof(string));
    dt.Columns.Add("ENABLED", typeof(string));
    dt.Columns.Add("SORT", typeof(int));

    objConn = new OleDbConnection(strConn);
    objConn.Open();
    oleDA = new OleDbDataAdapter(query, objConn);
    oleDA.Fill(dt);

    objConn.Close();
    oleDA.Dispose();
    objConn.Dispose();
    return dt;

那么,谁能帮帮我?

【问题讨论】:

【参考方案1】:

我已经解决了我的问题。

更改以下代码而不是清晰地工作。

 private DataTable getSheetData(string strConn, string sheet)
    
        //string sid = Convert.ToString(new SystemId());
        string Ctime = Convert.ToDateTime(DateTime.Now).ToString("yyyyMMddhhmmss");
        string Mtime = Convert.ToDateTime(DateTime.Now).ToString("yyyyMMddhhmmss");
        string actorSId = Convert.ToString(WebPage.CurrentSysUserSId);
        string query = "select * from [" + sheet + "]";
        OleDbConnection objConn;
        OleDbDataAdapter oleDA;
        DataTable dt = new DataTable();
        dt.Columns.Add("SID", typeof(string));
        dt.Columns.Add("CREATE_DATETIME", typeof(string));
        dt.Columns.Add("MODIFY_DATETIME", typeof(string));
        dt.Columns.Add("CREATOR_SID", typeof(string));
        dt.Columns.Add("MODIFIER_SID", typeof(string));
        dt.Columns.Add("MARK_DELETED", typeof(string));
        dt.Columns.Add("ENABLED", typeof(string));
        dt.Columns.Add("SORT", typeof(int));

        objConn = new OleDbConnection(strConn);
        objConn.Open();
        DataSet dataSet = new DataSet();
        oleDA = new OleDbDataAdapter(query, objConn);
        oleDA.Fill(dt);
        foreach (DataRow dr in dt.Rows) // search whole table
        
            for (int i = 0; i < dt.Rows.Count - 1; i++)
                if (dt.Rows.Count > i)
                
                    string sid = Convert.ToString(new SystemId());
                    var row = dt.Rows[i];
                    row["SID"] = sid;
                    row["CREATE_DATETIME"] = Ctime;
                    row["MODIFY_DATETIME"] = Mtime;
                    row["CREATOR_SID"] = actorSId;
                    row["MODIFIER_SID"] = 0;
                    row["MARK_DELETED"] = "N";
                    row["ENABLED"] = "Y";
                    row["SORT"] = 1;
                
        
        objConn.Close();
        oleDA.Dispose();
        objConn.Dispose();
        return dt;
    

【讨论】:

以上是关于asp如何导入excel内容的主要内容,如果未能解决你的问题,请参考以下文章

word中的内容如何导入Excel指定表格里?

使用java进行excel导入,如何获得指定内容的单元格的列号

关于excel表格内容导入别的软件

ASP.NET中如何将Excel表中的数据导入到数据库中?

java如何把excel内容导入到mysql数据库,数据库的列名就是excel的列名

C#控制台无参方法的内容怎么导入到Excel表格中?