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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#从Excel中读取数据为空了,该怎么解决啊?相关的知识,希望对你有一定的参考价值。

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

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了。
参考技术A /// <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,还有就是读取不了第一行,这个问题我找过很多地方,都没有找打答案,我的解决方案就是,表头写两行,因为他不读取第一行数据。另外,尽量不要有空格,容易吧空格后面的内容读掉本回答被提问者和网友采纳
参考技术B 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;

参考技术C 试试把EXCEL 储存为.csv的格式 就是都用逗号分隔的那种试试
我刚成为C#程序员不久 我还不高端 哈哈
参考技术D 我去问老师

2015版vs c#读取excel代码

参考技术A  其实读取Excel表格中的数据和读取数据库中的数据是非常类似的,因为在某种程度上Excel表格可以看成是一张一张的数据表。其二者的主要区别在于所使用的数据引擎不一样。2015 版vSC#读取 excel代码有以下三种办法:1、OleDB方式优点:将Excel直接当做数据源处理,通过SQL直接读取内容,读取速度较快。缺点:读取数据方式不够灵活,无法直接读取某一个单元格。当Excel数据量很大时。会非常占用内存,当内存不够时会抛出内存溢出的异常。2、Com组件的方式。优点:能够非常灵活的读取Excel中的数据,用户可以灵活的调用各种函数进行处理。缺点:基于单元格的处理,读取速度较慢,对于数据量较大的文件最好不要使用此种方式读取。3、NPOI方式读取Excel。优点:读取Excel速度较快,读取方式操作灵活性。缺点:需要下载相应的插件并添加到系统引用当中。 参考技术B 在NuGet搜索Spire.XLS安装。添加下面的代码读取Excel:
Workbook workbook = new Workbook();
workbook.LoadFromFile("Input.xlsx");
Worksheet sheet = workbook.Worksheets[0];
int maxRow = sheet.LastRow;
int maxColumn = sheet.LastColumn;
for (int row = 1; row <= maxRow; row++)

for (int col = 1; col <= maxColumn; col++)

Console.Write(sheet[row, col].Value);
Console.Write("\t\t");

Console.Write("\n");

Console.ReadKey();
如果你是winform应用程序,可以直接读取到datatable然后展示到datagridview:
//创建一个datatable
DataTable datatable = new DataTable();
//载入Excel文档
Workbook workbook = new Workbook();
workbook.LoadFromFile("Input.xlsx");
//获取第一个工作表
Worksheet sheet = workbook.Worksheets[0];
//将第一个工作表的数据导出到datatable中
datatable = sheet.ExportDataTable();
this.dataGridView1.DataSource = datatable;

以上是关于C#从Excel中读取数据为空了,该怎么解决啊?的主要内容,如果未能解决你的问题,请参考以下文章

我需要利用Modbus协议读取电能表的数据,请问该怎么读呢? 语言是c#

C#读取大数据量Excel,60W行数据,该怎么处理

C#中怎么读取Struct(结构体)文件!!!!??救救我!!!!

java中 BufferedReader类读取文件时

使用spring mvc 怎么在后台接收空的整型数据。

c#从串口读取数据怎样读一个就清空缓存