如何将excel中的数据读取出来??在网上找了一下,都不行,帮下忙,谢了!~

job_2006 2008-05-22 10:54:27
如题
...全文
93 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
飘_飘 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 job_2006 的回复:]
汗,总算看到为什么都是Sheet1了,原来新建一个xsl,默认为Sheet1,Sheet2......

郁闷,

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


比如有Sheet1,Sheet2,Sheet3

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

如果一个xsl里有几W条数据,大家是怎么做的呢?
[/Quote]
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++)
{
//相关操作
}
}

}
liyin_liu 2008-05-22
  • 打赏
  • 举报
回复
读取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();
}


job_2006 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 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…
[/Quote]

多谢,正测试一些内容

-------
如果数据量很大的话,这样去遍历会不会很慢?
job_2006 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 Aderlee 的回复:]
引用 7 楼 job_2006 的回复:
汗,总算看到为什么都是Sheet1了,原来新建一个xsl,默认为Sheet1,Sheet2......

郁闷,

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


比如有Sheet1,Sheet2,Sheet3

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

如果一个xsl里有几W条数据…
[/Quote]


明白了,几个Sheet看成几个表,然后跟数据库表是一样的操作了
Aderlee 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 job_2006 的回复:]
汗,总算看到为什么都是Sheet1了,原来新建一个xsl,默认为Sheet1,Sheet2......

郁闷,

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


比如有Sheet1,Sheet2,Sheet3

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

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

那要看你那几个页面的数据的结构了
Aderlee 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 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$]"; …
[/Quote]


那你看一下你的Excel的表名是什么嘛
通常打开一个新的Excel都会初始化3个Sheet1、Sheet2、Sheet3。在Excel左下角可以看到。
job_2006 2008-05-22
  • 打赏
  • 举报
回复
汗,总算看到为什么都是Sheet1了,原来新建一个xsl,默认为Sheet1,Sheet2......

郁闷,

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


比如有Sheet1,Sheet2,Sheet3

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

如果一个xsl里有几W条数据,大家是怎么做的呢?
chinahnzl 2008-05-22
  • 打赏
  • 举报
回复
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
vlysses 2008-05-22
  • 打赏
  • 举报
回复
报什么错?
job_2006 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 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…
[/Quote]


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

=------------
请给个有效的例子
chinahnzl 2008-05-22
  • 打赏
  • 举报
回复
直接引用excel.dll或者使用oledb..
job_2006 2008-05-22
  • 打赏
  • 举报
回复
顶一下
yuelailiu 2008-05-22
  • 打赏
  • 举报
回复
// 连接字符串
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();

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧