我使用C#通过ASP.net网络表单显示Excel电子表格中的数据。我想对数据运行SQL查询,但我在查询如何在查询中使用字符串时遇到问题。
这是我在.aspx.cs文件中运行的代码。我也使用.aspx在GridView
。
protected void Page_Load(object sender, EventArgs e)
{
string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("ExcelCSTest.xls") + ";" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
OleDbConnection objConn = new OleDbConnection(sConnectionString);
objConn.Open();
string sSQL = "SELECT * FROM [Sheet1$A1:D14]";
OleDbCommand objCmdSelect = new OleDbCommand(sSQL, objConn);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;
DataSet objDataset1 = new DataSet();
objAdapter1.Fill(objDataset1, "XLData");
GridView1.DataSource = objDataset1.Tables[0].DefaultView;
GridView1.DataBind();
objConn.Close();
}
理想情况下,我想在我的WHERE
中添加string sSQL = "SELECT * FROM [Sheet1$A1:D14]";
子句,以便查询当前月份并从Excel电子表格中显示所述月份的行。
答案 0 :(得分:0)
我已经为您重写了代码,但是,您应该认真考虑坚持一些编码标准。请不要用数字结束变量,并考虑格式化代码,然后它更具可读性。您还需要在OleDbConnection()
语句中包围using
,然后才能正确处理。
这是格式化和重新编写的代码
public partial class ExcelAdapter : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("ExcelCSTest.xls") + ";" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
using (OleDbConnection objConn = new OleDbConnection(sConnectionString))
{
objConn.Open();
var sSQL = "SELECT * FROM [Sheet1$A1:D14]";
OleDbCommand objCmdSelect = new OleDbCommand(sSQL, objConn);
objCmdSelect.CommandType = CommandType.Text;
DataSet objDataset = new DataSet();
OleDbDataAdapter objAdapter = new OleDbDataAdapter(objCmdSelect).Fill(objDataset);
objConn.Close();
}
}
}
我没有时间测试这段代码,但我很确定它应该被发现。 (我希望)
进一步了解本教程。这是一个很好的来源,让您了解如何正确地完成这项工作。
Where Clause
将where
子句添加到SQL中非常容易,甚至可以更好地对其进行参数化以使其更加标准化。
您的代码应该类似于
var sSQL = "SELECT * FROM [Sheet1$A1:D14] WHERE currentDate = ?";
cmd.Parameter.Add("@Param1", OleDbType.VarChar).Value = todaysDate;
有关如何进行参数化的完整示例,请查看OleDbCommand.Parameters Property以及有关示例的更多详细信息,您可以查看我的答案示例Missing Required Parameter in Parameterized Query?