c# - 无法读取 excel XLSM 文件以绑定到 datagridview
问题描述
尝试读取 XLSM 文件并从 2 列中提取数据。我在我的 c# 应用程序中有以下代码,但它似乎不起作用,datagridview 从不显示任何数据,当我通过代码时,我到达连接字符串行并且没有错误,没有任何显示。
我找到了一些 OLE 连接字符串的示例到 excel,但没有一个工作,下面是我尝试的最新代码。
关于我做错了什么或我还能尝试什么的任何建议?
public string ConnectionString(string FileName, string Header)
{
OleDbConnectionStringBuilder Builder = new OleDbConnectionStringBuilder();
if (System.IO.Path.GetExtension(FileName).ToUpper() == ".XLSM")
{
Builder.Provider = "Microsoft.Jet.OLEDB.4.0";
Builder.Add("Extended Properties", string.Format("Excel 8.0;IMEX=1;HDR={0};", Header));
}
else
{
Builder.Provider = "Microsoft.ACE.OLEDB.12.0";
Builder.Add("Extended Properties", string.Format("Excel 12.0;IMEX=1;HDR={0};", Header));
}
Builder.DataSource = FileName;
return Builder.ConnectionString;
}
public DataTable LoadData(string FileName)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
DataTable dt = new DataTable();
using (OleDbConnection cn = new OleDbConnection { ConnectionString = ConnectionString(FileName, "No") })
{
cn.Open();
using (OleDbCommand cmd = new OleDbCommand { CommandText = "SELECT F2 As Parent, E2 As Gender FROM [Data$A2:I300]", Connection = cn })
{
OleDbDataReader dr = cmd.ExecuteReader();
dt.Load(dr);
}
return dt;
}
}
private void excelParents_Load(object sender, EventArgs e)
{
string fn = @"C:\Temp\Template.xlsm";
dgvParentListing.DataSource = LoadData(fn);
}
此时,我只是希望在我的表单上的 datagridview 控件中看到工作表中的数据。但是它是空白的,一旦表单加载,我就不会出错
解决方案
推荐阅读
- flutter - 为什么android studio没有在dart中显示对象细节?
- python - 如何通过连接曲面在 Python 中创建 3D 图像?
- django - 带有ajax的Django过滤器功能不起作用
- javascript - 使用 react native expo 为具有相同分数的用户分配相同的排名
- webgl - 如何使我的 WebGL 坐标系面向“左上”?
- javascript - 角度项目的平均堆栈路由
- java - 如何上传多部分文件而不存储在服务器硬盘上
- python - Python语音助手访问被拒绝错误
- node.js - Node js将批量xml数据写入SQL Server
- c# - 打开 Rest API 时出现招摇错误