C#从Excel中读取数据为空了,该怎么解决啊?

C#从Excel中读取数据为空了,该怎么解决啊?是用stringstrConn="Provider=Microsoft.Jet.Oledb.4.0;DataSource=... C#从Excel中读取数据为空了,该怎么解决啊?
是用 string strConn = "Provider=Microsoft.Jet.Oledb.4.0; Data Source=" + strPath
+ "; Extended Properties=‘Excel 8.0; HDR=NO; IMEX=1;’";
这样的连接读取数据的,可是我有的列前100行是数字,而之后是字符,这些字符没有读取出来,全是空,我不想修改注册表,不用office控件,该怎么解决呢?
展开
 我来答
一点设计演示
高粉答主

2016-01-06 · 职场/教育各类模板,衷于原创
一点设计演示
采纳数:874 获赞数:83610

向TA提问 私信TA
展开全部
1用OleBb读取Excel的时候,如果没有配置IMEX=1的属性,微软的处理机制是将列转换为同一类型来读取的.例如你在第一行写的数字格式,而第二行写的字符格式,就会出现某些列有值却读不出来.其实问题也很简单,如果知道问题所在的话.属性设置为"IMEX=1"即可。
读取excel数据 到 datagrid 出现:找不到可安装的ISAM 错误:
2.实在没有办法了 就仔细的查看了
一下数据链接字符串
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" + Server.MapPath(strExcelPath) + ";Extended Properties=Excel
8.0;HDR=Yes;IMEX=1;";最后发现“单引号”漏了。
改为:
String sConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(strExcelPath) +
";Extended Properties='Excel
8.0;HDR=Yes;IMEX=1;'"; 就ok了。
百度网友07da055
2010-10-28 · TA获得超过659个赞
知道小有建树答主
回答量:356
采纳率:33%
帮助的人:234万
展开全部
/// <summary>
/// 读取Excel文件,将内容存储在DataSet中
/// </summary>
/// <param name="opnFileName">带路径的Excel文件名</param>
/// <returns>DataSet</returns>
private DataSet ExcelToDataSet(string opnFileName)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + opnFileName + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
OleDbConnection conn = new OleDbConnection(strConn);
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = new DataSet();

try
{
strExcel = "select * from [sheet1$]";
conn.Open();
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(ds, "dtSource");
conn.Close();
}
catch
{
MessageBox.Show("源数据出错!");
DataSet d = new DataSet();
return d;
}
return ds;
}
注意:该方法有似乎只支持97-2003格式的excl,还有就是读取不了第一行,这个问题我找过很多地方,都没有找打答案,我的解决方案就是,表头写两行,因为他不读取第一行数据。另外,尽量不要有空格,容易吧空格后面的内容读掉
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hongzhoubd
2010-10-30
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
public partial class ExeporteExcel : Form
{
public ExeporteExcel()
{
InitializeComponent();
}
SqlDataAdapter adapter;
DataSet set;
private void button1_Click(object sender, EventArgs e)
{
ExportDataGridview(dataGridView1, true);
}

private void ExeporteExcel_Load(object sender, EventArgs e)
{
SqlConnection aa = new SqlConnection("Data Source=WIN-V29OC4E9DR6;Initial Catalog=mysql;Integrated Security=True");
aa.Open();

adapter = new SqlDataAdapter("select * from course",aa);
set = new DataSet();
adapter.Fill(set);
dataGridView1.DataSource=set.Tables[0];
}
public bool ExportDataGridview(DataGridView dgv, bool isShowExcle)
{
if (dgv.Rows.Count == 0)
return false;
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = isShowExcle;
for (int i = 0; i < dgv.ColumnCount; i = i + 1)
{
excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
}
for (int i = 0; i < dgv.RowCount - 1; i = i + 1)
{
for (int j = 0; j < dgv.ColumnCount; j = j + 1)
{
if (dgv[j, i].ValueType == typeof(string))
{
excel.Cells[i + 2, j + 1] = "" + dgv[j, i].Value.ToString();
}
else
{
excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString();
}

}
}
return true;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
5256884
2010-10-27 · TA获得超过172个赞
知道答主
回答量:157
采纳率:100%
帮助的人:113万
展开全部
试试把EXCEL 储存为.csv的格式 就是都用逗号分隔的那种试试
我刚成为C#程序员不久 我还不高端 哈哈
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
糖兜兜来兜兜糖
2010-10-27 · TA获得超过161个赞
知道小有建树答主
回答量:364
采纳率:66%
帮助的人:109万
展开全部
我去问老师
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式