大家好,最近我在用C#將EXCEL顯示到datagridview時遇到找不到可安裝的ISAM故障,按照網上的解決方法將'Excel 12.0;HDR=YES;IMEX=1'兩邊加上單引號,運行程式故障依舊;后來在“運行”對話框中:Regsvr32 C:\Windows\SysWOW64\msexcl40.dll ,顯示DllRegisterServer在C:\Windows\SysWOW64\msexcl40.dll已成功,然后運行程式故障依舊。我看網上基本就是這2種方法,現在請教大家看看我的程式哪有問題。謝謝EXCEL的版本不同,在Extended Properties='Excel 12.0;HDR=YES;IMEX=1'陳述句中要不要修改EXCEL后面的版本號?我的電腦裝的是WPS OFFICE的WPS校園版,這是是不是不行,要裝microsoft office才行?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
DataTable dt = new DataTable();
private void btnSure_Click(object sender, EventArgs e)
{
OpenFileDialog fd = new OpenFileDialog();//首先根據打開檔案對話框,選擇excel表格
fd.Filter = "表格|*.xlsx;*.xls";//打開檔案對話框篩選器
string strPath;//檔案完整的路徑名
if (fd.ShowDialog() == DialogResult.OK)
{
try
{
strPath = fd.FileName;
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1';";//不能是11.0
OleDbConnection Con = new OleDbConnection(strCon);//建立連接
string strSql = "select * from [Sheet1$]";//表名的寫法也應注意不同,對應的excel表為sheet1,在這里要在其后加美元符號$,并用中括號
OleDbCommand Cmd = new OleDbCommand(strSql, Con);//建立要執行的命令
OleDbDataAdapter da = new OleDbDataAdapter(Cmd);//建立資料配接器
DataSet ds = new DataSet();//新建資料集
da.Fill(ds);//把資料配接器中的資料讀到資料集中的一個表中(此處表名為shyman,可以任取表名)
//指定datagridview1的資料源為資料集ds的第一張表(也就是shyman表),也可以寫ds.Table["shyman"]
dataGridView1.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);//捕捉例外
}
}
}
private void btnQuit_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
uj5u.com熱心網友回復:
單純讀內容的話,如果有OFFICE環境,用物件模型是最省事的方案;如果不能保證具備OFFICE環境,可以試試第三方的擴展,像EPPlus、NPOI這些都可以脫離Office環境使用。uj5u.com熱心網友回復:
你好,不太懂您說的。我是個新手。什么是用物件模型?什么是保證OFFICE環境?uj5u.com熱心網友回復:
C#使用物件模型操作EXCEL。優點:微軟官方的方案,兼容性好,物件模型的使用方式更符合人的直觀認知,上手成本極低,如果本身具備一點VBA基礎,這個成本還能再打一個很大的折扣;缺點:需要電腦上安裝Office。https://blog.csdn.net/weixin_42764060/article/details/90145351
官方的另一種就是你發的這個:OLEDB資料庫引擎讀寫EXCEL,缺點是非常繁瑣,而且需要有資料庫驅動(因為我沒用過這種方案,所以不清楚這個驅動是由誰來提供,如果由Office來提供,就需要電腦上安裝Office)。
===========================
其它第三方方案兼容性一般,尤其在混用WPS和Office對檔案進行編輯的時候,很容易報錯。有些可能還要收費。
C#使用EPPlus讀excel。優點:使用習慣接近Office的物件模型。
https://blog.csdn.net/birdfly2015/article/details/90607323
C#使用NPOI讀寫EXCEL。
https://blog.csdn.net/vblegend_2013/article/details/79483391
除此之外,還有Spire.XLS,這個沒用過,不方便評價。
===============
不光Excel,Word也可以使用類似的方案進行程式化處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/133937.html
標籤:C#
上一篇:如何看待這個網站亂刪帖的行為?
下一篇:外鍵物體為何為null?
