使用Oledb读取Excel文件 - 将excel文件的内容视为仅文本

Pri*_*kar 2 c# oledb wpf excel-2007

我正在使用C#和OleDb从excel 2007文件中读取数据.

我正在使用的连接字符串是:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
Run Code Online (Sandbox Code Playgroud)

以下是读取excel的代码:

private OleDbConnection con = null;
private OleDbCommand cmd = null;
private OleDbDataReader dr = null;
private OleDbDataAdapter adap = null;
private DataTable dt = null;
private DataSet ds = null;
private string query;
private string conStr;

public MainWindow()
{
    this.InitializeComponent();
    this.query = "SELECT * FROM [Sheet1$]";
    this.conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\301591\\Desktop\\Fame.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text\"";
}

private void btnImport_Click(object sender, RoutedEventArgs e)
{
    this.ImportingDataSetWay();
}

private void ImportingDataSetWay()
{
    con = new OleDbConnection(conStr);
    cmd = new OleDbCommand(query, con);
    adap = new OleDbDataAdapter(cmd);
    ds = new DataSet();
    adap.Fill(ds);
    this.grImport.ItemsSource = ds.Tables[0].DefaultView;
}
Run Code Online (Sandbox Code Playgroud)

这里grImport是我的WPF数据网格,我使用的是自动生成的列.

如何确保存储在Excel中的内容始终以字符串形式读取.我不允许修改任何注册表值来实现此目的.有没有更好的方法来阅读excel.请指导我.如果您需要任何其他信息,请告诉我.

此致,Priyank

Thi*_* Oo 5

你可以尝试oledb提供者连接字符串如下.

HDR = NO表示oledb将读取所有行作为数据[NO HEADER].因此,当您的标题列都是文本时,它会将所有列中的所有行数据视为文本.将数据填充到DataSet后,您必须删除第一行,因为它不是数据.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\"";
Run Code Online (Sandbox Code Playgroud)