10 c# asp.net excel file-upload web-applications
我要求允许此ASP.NET Web应用程序的用户上载特定格式的Excel电子表格,使用电子表格中的数据填充数组,并将数组绑定到Oracle存储过程以进行验证并插入数据库.我必须能够从Excel电子表格中读取数据,而无法将其保存到Web服务器的硬盘上.这是我无法弄清楚如何做的部分.这是一个简单的代码示例.
<%--ASP.NET Declarative--%>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Send File" OnClick="Button1_Click" />
// C# Code-Behind
protected void Button1_Click(object sender, EventArgs e) {
var postedFile = FileUpload1.PostedFile;
// ... Read file in memory and put in format to send to stored procedure ...
}
Run Code Online (Sandbox Code Playgroud)
谁能帮我这个?我感谢任何人的考虑.
thx,
gabe
我在Codeplex上找到了一个很棒的轻量级开源API,用于执行此操作,称为ExcelDataReader.
它可以将excel文件的输入流转换为System.Data.DataSet
对象(可能使用BIFF规范进行解析).
这是链接:
这是一个代码示例:
<%--ASP.NET Declarative--%>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Send File" OnClick="Button1_Click" />
<asp:GridView ID="GridView1" runat="server" />
// C# Code-Behind
protected void Button1_Click(object sender, EventArgs e) {
// the ExcelDataReader takes a System.IO.Stream object
var excelReader = new ExcelDataReader(FileUpload1.FileContent);
FileUpload1.FileContent.Close();
DataSet wb = excelReader.WorkbookData;
// get the first worksheet of the workbook
DataTable dt = excelReader.WorkbookData.Tables[0];
GridView1.DataSource = dt.AsDataView();
GridView1.DataBind();
}
Run Code Online (Sandbox Code Playgroud)