Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用c语言查询excel表格_C#_Excel_Ms Office - Fatal编程技术网

C# 用c语言查询excel表格

C# 用c语言查询excel表格,c#,excel,ms-office,C#,Excel,Ms Office,我想用以下代码读取c中的Excel文件 string excelFileName = "Book2.xls"; string excelConnectString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Book2.xls;Extended Properties=""Excel 8.0;HDR=YES;"""; //string excelConnectString = @"Provider = Microsoft.Jet.OLEDB.

我想用以下代码读取c中的Excel文件

string excelFileName = "Book2.xls";
string excelConnectString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Book2.xls;Extended Properties=""Excel 8.0;HDR=YES;""";
//string excelConnectString = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " + excelFileName + ";" + "Extended Properties = Excel 8.0; HDR=Yes;IMEX=1";

OleDbConnection objConn = new OleDbConnection(excelConnectString);
OleDbCommand objCmd = new OleDbCommand("Select * From [Sheet1$]", objConn);

OleDbDataAdapter objDatAdap = new OleDbDataAdapter();
objDatAdap.SelectCommand = objCmd;
DataSet ds = new DataSet();
objDatAdap.Fill(ds);
一切正常。现在我的要求是阅读excel文件,如下所示

SELECT A,B,D From [Sheet1];

您可以这样构造使用查询:

SELECT FirstName, LastName, Mobile FROM [Sheet1$]

i、 e.使用第一行值作为列名。

如果要读取A1到D1,则Select命令应如下所示:

SELECT * FROM [SHEETNAME_HERE$A1:D1]
全部代码:

OleDbConnection con = new OleDbConnection(
    "provider=Microsoft.Jet.OLEDB.4.0;data source="
    + XLS_FILE_NAME_AND_PATH_HERE
    + ";Extended Properties=Excel 8.0;");

StringBuilder stbQuery = new StringBuilder();
stbQuery.Append("SELECT * FROM [" + SHEETNAME_HERE + "$A1:D1]");
OleDbDataAdapter adp = new OleDbDataAdapter(stbQuery.ToString(), con);

DataSet dsXLS = new DataSet();
adp.Fill(dsXLS);

DataView dvEmp = new DataView(dsXLS.Tables[0]);

dataGridView1.DataSource = dvEmp;

你可以通过传递适当的索引来选择一个特定的单元格。

你想用列名搜索吗?@Anuraj:不可以通过“从工作表中选择a、B、C”这样的单元格进行搜索。我想你不能这样做。。。一个小的解决方法是选择*填充数据集,然后从数据集中删除列…@Peter Abudlin:谢谢你的回答,我已经编辑了我的问题图像,我不想按列名读取数据,我想按单元格a、B、C读取数据。。
DataTable Contents = new DataTable();
using (OleDbDataAdapter adapter = new OleDbDataAdapter("Select * From [Sheet1$]", objConn))
{
    adapter.Fill(Contents);
}
Console.WriteLine(Contents.Rows[0][0]);