当我尝试在C#中读取Excel文件时出现问题
for(int k = 0; k < number_of_l_steps; k++)
{
if(k == 0)
std::ofstream out("outputk0.txt", ios::out);
else
std::ofstream out("outputnotk0.txt", ios::out);
for(int i = 0; i < n_k; i++)
{
cout << i << endl;
double k = exp( log(kmin1) + i*(log(kmax) - log(kmin1))/(n_k-1.));
for(int j = 0; j < n_z; j++)
{
double z = zmin + j*(zmax - zmin)/(n_z-1.);
// cout << k << " " << z << endl;
out << i << " " << j << " " << cv.U(z,k) << endl;
//out << i << " " << j << " " << gsl_matrix_get(Gl,i,j) << endl;
}
}
out.close();
}
但它只显示部分数据。我附上了图片。
答案 0 :(得分:1)
它读取前几条记录并确定该列是整数类型,当它找到非整数类型的数据时失败。
您需要将HDR = No设置为连接字符串中的属性并且IMEX = 1
答案 1 :(得分:0)
之前我遇到了同样类型的问题,无论连接字符串中的设置如何,我仍然缺少列数据。为了解决这个问题,我最终使用了开源ExcelDataReader.DataSet nuget包(https://github.com/ExcelDataReader/ExcelDataReader),它可以在不使用oledb驱动程序或安装了excel的情况下读取Excel文件。
以下代码应该适合您,因为我使用您的示例数据创建了.xls和.xlsx,并且返回的数据集包含所有值。 ExcelDataReader还将检测它是否为.xls或.xlsx。
var filePath = txtExcelFile.Text;
using (var stream = File.Open(filePath,FileMode.Open,FileAccess.Read))
{
using (var reader = ExcelReaderFactory.CreateReader(stream))
{
var ds = reader.AsDataSet();
}
dataGridView1.DataSource = ds.Tables[0].DefaultView;
}