读取excel 有些列取不到值

xiaofan_sap 2010-08-13 03:40:50
如题
...全文
1078 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaofan_sap 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 chazikai24 的回复:]
引用 40 楼 xiaofan_sap 的回复:
引用 39 楼 thoughter 的回复:
………………
你把IMEX =1当中的空格去掉……
谢谢了 的确是这个原因 结贴

无语了...空格会有这种问题?我怎么没遇到过?我一般=号都有打空格的习惯的。
[/Quote]你试试看 等号左边的~不过我的的确是这个问题
chazikai24 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 xiaofan_sap 的回复:]
引用 39 楼 thoughter 的回复:
………………
你把IMEX =1当中的空格去掉……
谢谢了 的确是这个原因 结贴
[/Quote]
无语了...空格会有这种问题?我怎么没遇到过?我一般=号都有打空格的习惯的。
xiaofan_sap 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 thoughter 的回复:]
………………
你把IMEX =1当中的空格去掉……
[/Quote]谢谢了 的确是这个原因 结贴
xiaofan_sap 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 net_lover 的回复:]
在 excel都看不到值啊。是不是公式是写错了?
[/Quote]老大,有没有可能是数据太多的原因?我删除了几千行数据,剩下的倒是能读出来了,与数据大小有关么,我给您的那个是18m左右的数据。
xingjibing 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 net_lover 的回复:]
1,连接字符串里加
HDR=No;IMEX=1
必须

方法2.打开Excel,把每一个单元格的前面加'单引号,
[/Quote]
第一个方法是这样的,如果有文字,有数字的时候要用第一个方法
不然他不认识数字
孟子E章 2010-08-16
  • 打赏
  • 举报
回复
在 excel都看不到值啊。是不是公式是写错了?
xiaofan_sap 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 net_lover 的回复:]
HTML code
<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w……
[/Quote]
老大 这是什么原因啊 为什么读取不到值呢
孟子E章 2010-08-16
  • 打赏
  • 举报
回复
<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

protected void Page_Load(object sender, EventArgs e)
{
String ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Data.xls") + "; Extended Properties=\"Excel 8.0;HDR=No;IMEX=1;\"";
OleDbConnection cn = new OleDbConnection(ConnectionString);
cn.Open();
OleDbCommand cmd = new OleDbCommand("Select * From [Sheet1$C3:FP5785]", cn);
OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
GridView1.DataSource = dr;
GridView1.DataBind();
cn.Close();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" ShowHeader="False">
</asp:GridView>
</form>
</body>
</html>


不过,通过公式计算的单元格在Excel里也没显示出正确的值。

xiaofan_sap 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 net_lover 的回复:]
我们都是这样写都是可以读取的,不知道不是怎么测试的。最好的方法是把Excel里面的所有单元格设置为文本格式,或者在每个单元格前面加'
这些方法都是可行的。
你如果不行,请把你的xls发到amxh@21cn.com
[/Quote]收到了么~
xiaofan_sap 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 net_lover 的回复:]
引用 19 楼 xiaofan_sap 的回复:

引用 18 楼 net_lover 的回复:
我们都是这样写都是可以读取的,不知道不是怎么测试的。最好的方法是把Excel里面的所有单元格设置为文本格式,或者在每个单元格前面加'
这些方法都是可行的。
你如果不行,请把你的xls发到amxh@21cn.com

大侠 ,发给您了~


不好意思,刚才邮箱满了,麻烦再发一下
[/Quote]发给您了~_~
孟子E章 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 xiaofan_sap 的回复:]

引用 18 楼 net_lover 的回复:
我们都是这样写都是可以读取的,不知道不是怎么测试的。最好的方法是把Excel里面的所有单元格设置为文本格式,或者在每个单元格前面加'
这些方法都是可行的。
你如果不行,请把你的xls发到amxh@21cn.com

大侠 ,发给您了~
[/Quote]

不好意思,刚才邮箱满了,麻烦再发一下
happy664618843 2010-08-16
  • 打赏
  • 举报
回复
# public DataSet GetDataSet(string filePath)  
# {
# string Connstr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + filePath + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");
# OleDbConnection Conn = new OleDbConnection(Connstr);
# //创建ArrayList对象 存放所有sheetname
# ArrayList sheetNamelist = new ArrayList();
# //获取配置Excel中sheet总数(这里是根据项目需求配置的) 如果需要导入Excel表格所有sheet数据则将此代码删除
# int sheetCount = Convert.ToInt32(ConfigurationManager.AppSettings["sheetCount"].ToString());
# DataSet dsExcel = new DataSet();
# try
# {
# if (Conn.State == ConnectionState.Closed)
# {
# Conn.Open();
# }
# DataTable dtExcelSchema = Conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
# string sheetName = string.Empty;
# if (dtExcelSchema.Rows.Count > sheetCount)
# {
# Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--
# alert('很抱歉!你上传Excel文件sheet总数过多不能大于10个sheet..!! ')
# // --></mce:script>");
# return;
# }
# else
# {
# for (int j = 0; j < dtExcelSchema.Rows.Count; j++)
# {
# sheetName = String.Format("Sheet{0}$", j + 1);
# sheetNamelist.Add(sheetName);
# }
# }
#
# }
# catch (Exception ex)
# {
# throw new Exception(ex.Message.ToString(), ex);
# }
# finally
# {
# Conn.Close();
# }
# try
# {
# string strSQL = string.Empty;
# for (int i = 0; i < sheetNamelist.Count; i++)
# {
# strSQL = "select * from [" + sheetNamelist[i].ToString() + "]";
# OleDbDataAdapter da = new OleDbDataAdapter(strSQL, Conn);
# DataTable dtExcel = new DataTable(sheetNamelist[i].ToString());
# da.Fill(dtExcel);
# dsExcel.Tables.Add(dtExcel);
# }
# return dsExcel;
# }
# catch (Exception ex)
# {
# throw new Exception(ex.Message.ToString(), ex);
# }
# }
#
# //从Excel 表中取出数据 将取出来的数据插入到数据库中
# public void InsertData(DataSet ds) {
# string strSQL=string.Empty;
# if (ds.Tables[0].Rows.Count > 0)
# {
# for (int j = 0; j < ds.Tables.Count; j++)
# {
# for(int i=0;i<ds.Tables[j].Rows.Count;i++)
# {
# DataRow dr=ds.Tables[j].Rows[i];
# //组名
# string groupname = dr["组名"].ToString().Trim();
# //联系人
# string contactName = dr["联系人"].ToString().Trim();
# //手机号码
# string mobile = dr["手机号码"].ToString().Trim();
# //公司名称
# string companyName = dr["公司名称"].ToString().Trim();
# //公办号码
# string officeNum = dr["办公号码"].ToString().Trim();
# //家庭号码
# string homeNum = dr["家庭号码"].ToString().Trim();
# //邮箱
# string Email = dr["邮 箱"].ToString().Trim();
# //联系地址
# string address = dr["联系地址"].ToString().Trim();
# //创建时间
# string createtime = dr["创建时间"].ToString().Trim();
# //性别
# string Sex = dr["性别"].ToString().Trim();
# //手机套餐类型
# string mobileType = dr["手机套餐类型"].ToString().Trim();
# //是否开通通信助理
# string isOpen = dr["是否开通通信助理"].ToString().Trim();
# //SQL 语句
# strSQL = "insert into msm_Excel(groupName,Mobile,Name,companyName,officeNum,homeNum,Emial,address,Createtime,Sex,mobileType,isOpen)values('" + groupname + "','" + mobile + "','" + contactName + "','" + companyName + "','" + officeNum + "','" + homeNum + "','" + Email + "','" + address + "','" + createtime + "','" + Sex + "','" + mobileType + "','" + isOpen + "')";
# try
# {
# int n = SQLHelper.SqlDataExecute(strSQL);
# if (n > 0)
# {
# Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--
# alert('数据插入成功!')
# // --></mce:script>");
# Label1.Text = "一共成功插入" + ds.Tables[j].Rows.Count.ToString() + "条数据";
# }
# else
# {
# Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--
# alert('服务器繁忙!请稍候再试..!')
# // --></mce:script>");
# }
# }
# catch (Exception ex)
# {
# throw ex;
# }
# }
# }
# }
#
# else {
# Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--
# alert('此Excel文件中无数据!!!')
# // --></mce:script>");
# }
#
# }
# //调用
# //获取上传文件名
# string fileName = FileUpload1.FileName;
# //判断是否存在上传文件
# if (FileUpload1.PostedFile.FileName.Length == 0) {
# Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--
# alert('请选择你要上传的Excel文件!!')
# // --></mce:script>");
# }
# //判断上传的文件类型是否正确
# else if (!Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower().Equals(".xls") && !Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower().Equals(".xlsx"))
# {
# Page.RegisterStartupScript("", "<script>alert('很抱歉!你上传的文件类型不正确!只能上传Excel类型的文件!')</script.");
# }
# else
# {
# //获取上传的文件路径
# filePath = Server.MapPath("TxtFiles\\") + DateTime.Now.ToString("yyyyMMddhhmmss") + fileName;
# this.FileUpload1.PostedFile.SaveAs(filePath);
# ds = GetDataSet(filePath);
# InsertData(ds);
#
# }
xiaofan_sap 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 net_lover 的回复:]
我们都是这样写都是可以读取的,不知道不是怎么测试的。最好的方法是把Excel里面的所有单元格设置为文本格式,或者在每个单元格前面加'
这些方法都是可行的。
你如果不行,请把你的xls发到amxh@21cn.com
[/Quote]
大侠 ,发给您了~
孟子E章 2010-08-16
  • 打赏
  • 举报
回复
我们都是这样写都是可以读取的,不知道不是怎么测试的。最好的方法是把Excel里面的所有单元格设置为文本格式,或者在每个单元格前面加'
这些方法都是可行的。
你如果不行,请把你的xls发到amxh@21cn.com
thoughter 2010-08-16
  • 打赏
  • 举报
回复
………………
你把IMEX =1当中的空格去掉……
xiaofan_sap 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 thoughter 的回复:]
可能看不全,图片地址:
http://hi.csdn.net/attachment/201008/16/1652785_128193977852RX.jpg
[/Quote]
帅哥 把你的程序打包发给我吧 email : kingfxp@163.com
~
xiaofan_sap 2010-08-16
  • 打赏
  • 举报
回复
http://hi.csdn.net/attachment/201008/16/156168_1281943465HK6I.jpg
这是我弄得 ,我在同事电脑上也这样做了 ,结果也是一样 。
我的环境
xp (sp2)
vs2008
sql2005(与这个没有关系吧)
太郁闷了
xiaofan_sap 2010-08-16
  • 打赏
  • 举报
回复
郁闷死我了 我的怎么搞的 就是读不出来呢
thoughter 2010-08-16
  • 打赏
  • 举报
回复
thoughter 2010-08-16
  • 打赏
  • 举报
回复
加载更多回复(22)

110,522

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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