C# 将电子表格文件从fileupload控件读取到filestream中
我正试图找到使用fileupload控件选择excel电子表格xls和xlsx的最佳方法,然后使用filestream对象对其进行解析,然后填充数据集 这是我迄今为止完成这项工作的代码,但不同之处在于我将excel电子表格保存到解决方案中的一个文件夹中,然后使用Microsoft ACE OLEDB连接查询数据C# 将电子表格文件从fileupload控件读取到filestream中,c#,asp.net,file-upload,filestream,C#,Asp.net,File Upload,Filestream,我正试图找到使用fileupload控件选择excel电子表格xls和xlsx的最佳方法,然后使用filestream对象对其进行解析,然后填充数据集 这是我迄今为止完成这项工作的代码,但不同之处在于我将excel电子表格保存到解决方案中的一个文件夹中,然后使用Microsoft ACE OLEDB连接查询数据 protected void btnUpload_Click(object sender, EventArgs e) { string connectingStr
protected void btnUpload_Click(object sender, EventArgs e)
{
string connectingString = "";
if (ctrlFileUpload.HasFile)
{
string fileName =
Path.GetFileName(ctrlFileUpload.PostedFile.FileName);
string fileExtension =
Path.GetExtension(ctrlFileUpload.PostedFile.FileName);
//Path.GetExtension(ctrlFileUpload.PostedFile.ContentType);
string fileLocation =
Server.MapPath("~/App_Data/" + fileName);
ctrlFileUpload.SaveAs(fileLocation);
// Check whether file extension is xls or xslx
if (fileExtension == ".xls")
{
connectingString =
"Provider=Microsoft.ACE.OLEDB.4.0;Data Source=" +
fileLocation + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=2\"";
}
else if (fileExtension == ".xlsx")
{
connectingString =
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
fileLocation + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=2\"";
}
// Create OleDb Connection and OleD Command
using (OleDbConnection con = new OleDbConnection(connectingString))
{
try
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
OleDbDataAdapter dAdapter = new OleDbDataAdapter(cmd);
//DataTable dtExcelRecords = new DataTable();
DataSet ds = new DataSet();
con.Open();
DataTable dtExcelSheetName = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string getExcelSheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString();
cmd.CommandText = "Select * FROM [" + getExcelSheetName + "]";
dAdapter.SelectCommand = cmd;
//dAdapter.Fill(dtExcelRecords);
dAdapter.Fill(ds);
//GridView1.DataSource = dtExcelRecords;
//GridView1.DataBind();
}
catch (Exception ex)
{
}
}
}
}
总之,我想读取电子表格中的数据,然后将其绑定到数据集,但不将文件保存到物理路径
是否有一种更干净的方法来编写我所缺少的代码。谢谢 我认为如果不将文件保存到服务器上,就不可能获取数据 如果无法保存上传文件,如何将数据源提供给OLEDB连接字符串 如果不想保留该文件,则可以在完成此执行后删除该文件
你也可以这样说钱德拉是你的同事吗?哈哈,不,他不是,但我会看看那个链接。谢谢没有任何解决方案可以不用下载自定义类库就可以使用吗?这是我向经理提出的建议,但他认为使用filestream读取文件会更好。