首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 如何将excel中的数据读取出来??在网上找了一下,都不行,帮下忙,谢了!~ [已结贴,结贴人:job_2006]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • job_2006
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-22 10:54:27 楼主
    如题
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yuelailiu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 10:56:391楼 得分:2
    // 连接字符串           
            string xlsPath = Server.MapPath("~/app_data/somefile.xls"); // 绝对物理路径
            string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                            "Extended Properties=Excel 8.0;" +
                            "data source=" + xlsPath;
            // 查询语句
            string sql = "SELECT * FROM [Sheet1$]";

            DataSet ds = new DataSet();
            OleDbDataAdapter da = new OleDbDataAdapter(sql, connStr);
            da.Fill(ds);    // 填充DataSet       
           
            // 在这里对DataSet中的数据进行操作       

            // 输出,绑定数据
            GridView1.DataSource = ds.Tables[0];
            GridView1.DataBind();
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • job_2006
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 10:57:362楼 得分:0
    顶一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinahnzl
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 10:58:313楼 得分:2
    直接引用excel.dll或者使用oledb..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • job_2006
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 10:58:394楼 得分:0
    引用 1 楼 yuelailiu 的回复:
    // 连接字符串           
            string xlsPath = Server.MapPath("~/app_data/somefile.xls"); // 绝对物理路径
            string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                            "Extended Properties=Excel 8.0;" + 
                            "data source=" + xlsPath;
            // 查询语句
            string sql = "SELECT * FROM [Sheet1$]";

            DataSet ds = new DataSe…



    填充时有问题,说Sheet1$不是有效名称或什么..........

    =------------
    请给个有效的例子
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • vlysses
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 11:01:255楼 得分:1
    报什么错?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinahnzl
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 11:07:416楼 得分:30
    C# code
    using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using Excel = Microsoft.Office.Interop.Excel; using System.Reflection; namespace Test { public partial class TestExcel : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Missing miss = Missing.Value; Excel.ApplicationClass excelApp = new Excel.ApplicationClass(); excelApp.Visible = false; Excel.Workbooks excelBooks = excelApp.Workbooks as Excel.Workbooks; Excel.Workbook excelBook = excelBooks.Open("F:\\Test.xls", miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss, miss); Excel.Worksheet excelSheet = excelBook.ActiveSheet as Excel.Worksheet; for (int i = 2; i < excelSheet.Rows.Count; i++) { if (((Excel.Range)excelSheet.Cells[i, 1]).Value2 != null) { for (int ii = 1; ii < excelSheet.Columns.Count; ii++) { if (((Excel.Range)excelSheet.Cells[i, ii]).Value2 != null) { Response.Write(((Excel.Range)excelSheet.Cells[i, ii]).Value2.ToString()); } else { break; } } Response.Write("<br />"); }else { break; } } excelBook.Save(); excelBook.Close(true, miss, miss); excelBooks.Close(); excelApp.Quit(); } } }


    我用的是excel 2003
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • job_2006
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 11:12:357楼 得分:0
    汗,总算看到为什么都是Sheet1了,原来新建一个xsl,默认为Sheet1,Sheet2......

    郁闷,

    如果一个xsl文件中有多个页面,每个页面都有一定的数据,那大家是怎么把数据导入数据库的呢???


    比如有Sheet1,Sheet2,Sheet3

    是循环这三个页面,然后再循环里面的数据,最后添加到数据库吗,还是一次性读取三个页面的数据,再循环数据添加至数据库???

    如果一个xsl里有几W条数据,大家是怎么做的呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Aderlee
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 11:15:198楼 得分:5
    引用 4 楼 job_2006 的回复:
    引用 1 楼 yuelailiu 的回复:
    // 连接字符串             
            string xlsPath = Server.MapPath("~/app_data/somefile.xls"); // 绝对物理路径 
            string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
                            "Extended Properties=Excel 8.0;" + 
                            "data source=" + xlsPath; 
            // 查询语句 
            string sql = "SELECT * FROM [Sheet1$]"; …



    那你看一下你的Excel的表名是什么嘛
    通常打开一个新的Excel都会初始化3个Sheet1、Sheet2、Sheet3。在Excel左下角可以看到。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Aderlee
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 11:16:529楼 得分:3
    引用 7 楼 job_2006 的回复:
    汗,总算看到为什么都是Sheet1了,原来新建一个xsl,默认为Sheet1,Sheet2......

    郁闷,

    如果一个xsl文件中有多个页面,每个页面都有一定的数据,那大家是怎么把数据导入数据库的呢???


    比如有Sheet1,Sheet2,Sheet3

    是循环这三个页面,然后再循环里面的数据,最后添加到数据库吗,还是一次性读取三个页面的数据,再循环数据添加至数据库???

    如果一个xsl里有几W条数据,大家是怎么做的呢?


    那要看你那几个页面的数据的结构了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • job_2006
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 11:20:2510楼 得分:0
    引用 9 楼 Aderlee 的回复:
    引用 7 楼 job_2006 的回复:
    汗,总算看到为什么都是Sheet1了,原来新建一个xsl,默认为Sheet1,Sheet2...... 

    郁闷, 

    如果一个xsl文件中有多个页面,每个页面都有一定的数据,那大家是怎么把数据导入数据库的呢??? 


    比如有Sheet1,Sheet2,Sheet3 

    是循环这三个页面,然后再循环里面的数据,最后添加到数据库吗,还是一次性读取三个页面的数据,再循环数据添加至数据库??? 

    如果一个xsl里有几W条数据…



    明白了,几个Sheet看成几个表,然后跟数据库表是一样的操作了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • job_2006
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 11:21:3011楼 得分:0
    引用 6 楼 chinahnzl 的回复:
    C# codeusing System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    using Excel = Microsoft.Office.Interop.Excel;
    using System.Reflection;

    namespace Test
    {
        public partial clas…


    多谢,正测试一些内容

    -------
    如果数据量很大的话,这样去遍历会不会很慢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liyin_liu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 11:42:1612楼 得分:2
    读取Excel数据的代码:这个很简单的
    private DataSet CreateDataSource()
        {
            string strCon;
            strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("excel.xls") + "; Extended Properties=Excel 8.0;";
            OleDbConnection olecon = new OleDbConnection(strCon);
            OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strCon);
            DataSet myds = new DataSet();
            myda.Fill(myds);
            return myds;
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            GridView1.DataSource = CreateDataSource();
            GridView1.DataBind();
        }


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • feiyu0805
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-22 11:48:5713楼 得分:5
    引用 7 楼 job_2006 的回复:
    汗,总算看到为什么都是Sheet1了,原来新建一个xsl,默认为Sheet1,Sheet2......

    郁闷,

    如果一个xsl文件中有多个页面,每个页面都有一定的数据,那大家是怎么把数据导入数据库的呢???


    比如有Sheet1,Sheet2,Sheet3

    是循环这三个页面,然后再循环里面的数据,最后添加到数据库吗,还是一次性读取三个页面的数据,再循环数据添加至数据库???

    如果一个xsl里有几W条数据,大家是怎么做的呢?

    C# code
    public void ExcelToDataSet() { string strFilePath = Server.MapPath("../upload/excel/" + SaveClientFile()); string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFilePath + ";Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); DataTable sheetNames = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });//获得Excel中的所有sheetname //OleDbDataAdapter odda; foreach (DataRow dr in sheetNames.Rows)//循环所有的表 { DataTable dtAll = dbexcelHelper.GetTable("select *from [" + dr[2] + "]", conn, "tbTable"); if (conn != null && conn.State == ConnectionState.Open) { conn.Close(); } for (int i = 0; i < dtAll.Rows.Count; i++) { //相关操作 } } }
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved