读Excel表的难题

acxcod 2004-12-26 12:16:04
用以下语句读Excel表时,如果Excel表中的网格的内容是数字并且不是在键盘手工输入,即从别的地方copy过来时,会读不出来,无论你把该格的属性设成什么也一样,大家有什么好的办法?
Eanme = @"c:\abc\abc.xls"
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=";
strConn += Ename.ToString();
strConn += ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet,"mytable");
DataGrid3.DataSource = myDataSet.Tables["mytable"].DefaultView;
DataGrid3.DataBind();
...全文
227 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2005-01-08
  • 打赏
  • 举报
回复
用sql语句读取excel文件内容时,一个列的数据类型要一致,否则读不出来
wula0010 2005-01-08
  • 打赏
  • 举报
回复
学习
acxcod 2005-01-08
  • 打赏
  • 举报
回复
to:sunrongxa(西康指挥部.net)
你的办法能解决读不出复制过来的纯数字单元格吗?
acxcod 2005-01-08
  • 打赏
  • 举报
回复
to:net_lover(孟子E章)
一个列的数据类型已经一致了(文本);但还是不行.
但如果在不行的格的数字前加一个'号,马上就能读出.
并非所有数字的单元格都读不出,有些是能读出的.好象从别的地方copy过来的就会存在这样的问题.用键盘输入的就没事.
sunrongxa 2005-01-07
  • 打赏
  • 举报
回复
public bool ReadExcelToDataSet(string strFileName,string strSheet,DataSet ds)
{

try
{
string strExcel;
strExcel="Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+strFileName+";Extended Properties=Excel 8.0;";
string strSQLCommand="select 记录号,序号,姓名,性别,出生年月日,文化程度,身份证号,参加工作时间,工种,单位,级别,理论,实作,素质考核,答辩,期数,备注 from ["+strSheet+"$]";
OleDbConnection conn = new OleDbConnection(strExcel);
OleDbDataAdapter myCommand = new OleDbDataAdapter(strSQLCommand,strExcel);
myCommand.Fill(ds,strSheet);
return true;}
catch{
return false;
}

}
suosuoyyy 2005-01-06
  • 打赏
  • 举报
回复
关注
guyking 2004-12-29
  • 打赏
  • 举报
回复
遇到相同问题
关注
luckin 2004-12-28
  • 打赏
  • 举报
回复
我也遇到同样的问题。关注
yezie 2004-12-26
  • 打赏
  • 举报
回复
用excel对象看看,
不过那样好像不能用select了
Mghost 2004-12-26
  • 打赏
  • 举报
回复
帮你顶顶
acxcod 2004-12-26
  • 打赏
  • 举报
回复
to pangzhenjian(建) :
你的方法和我的不是一样吗?
你试试从别的地为copy一些数字入Excel格中,看是不是会读不出来.
pangzhenjian 2004-12-26
  • 打赏
  • 举报
回复
Dim source As String = File1.Value
Dim connstr As String = "provider=microsoft.jet.oledb.4.0;data source=" + source + ";extended properties=excel 8.0"
Dim myconnection As OleDbConnection = New OleDbConnection(connstr)

Dim mycommand As OleDbDataAdapter = New OleDbDataAdapter("select * from [sheet1$]", myconnection)
Try
Dim mydataset As DataSet = New DataSet()
mycommand.Fill(mydataset, "[sheet1$]")
DataGrid1.DataSource = mydataset.Tables("[sheet1$]")
DataGrid1.DataBind()
Catch exp As OleDb.OleDbException
Response.Write(exp.Message)
Finally
myconnection.Close()
帆张芳显 2004-12-26
  • 打赏
  • 举报
回复
帮你顶了,学习
acxcod 2004-12-26
  • 打赏
  • 举报
回复
用excel对象 更难,请看:
http://community.csdn.net/Expert/topic/3676/3676388.xml?temp=.2542841
同时,用excel对象怎样知道有多少行?

62,041

社区成员

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

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

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

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