C#读取excel文件
C#读取excel文件
读取的是本地的excel文件,读取过程中遇到的问题是外部表不是预期格式
的错误如片如下
造成这个错误的原因是因为表格是新版本,然而读取的驱动是老版本导致的,换成新的就好了,下面我把这两种都放上面了,需要的自取
static DataSet ExcelToDS(string Path)
{
//string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
//2003(Microsoft.Jet.Oledb.4.0)
//string strConn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'", Path);
//2010(Microsoft.ACE.OLEDB.12.0)
string strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'", Path);
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel = "select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds, "table1");
return ds;
}
简单的测试一下方法能不能用,由于方法返回的数据类型是DataSet类型,遍历就行了,可以根据自己需要取某些列的数据。
public static List<sal_chance> ConvertExcelToSalChance(string filepath) {
List<sal_chance> salChanceList = new List<sal_chance>();
sal_chance sal_chance = new sal_chance();
DataSet ds = ExcelToDS(filepath);
foreach (DataTable dt in ds.Tables) //遍历所有的datatable
{
foreach (DataRow dr in dt.Rows)
{
object[] arr = dr.ItemArray;
for (int i = 0; i < arr.Length; i++)
{
switch (i)
{
case 1:
sal_chance.chc_source=arr[i].ToString();
break;
case 2:
sal_chance.chc_cust_name = arr[i].ToString();
break;
case 3:
sal_chance.chc_rate = Convert.ToInt32(arr[i]);
break;
case 4:
sal_chance.chc_linkman = arr[i].ToString();
break;
case 5: sal_chance.chc_title = arr[i].ToString();
break;
case 6: sal_chance.chc_tel = arr[i].ToString();
break;
case 7: sal_chance.chc_desc = arr[i].ToString();
break;
default:
break;
}
}
salChanceList.Add(sal_chance);
}
}
return salChanceList;
}
成功读取到excel里面的数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?