ذخیره و خواندن اطلاعات Excel با استفاده از OpenXml درASP
چهارشنبه 13 آبان 1394در این مقاله میخواهیم بیاموزیم که چه طور میتوان با استفاده از فایل آپلود یک فایل Excel را ذخیره و اطلاعات آن را در همان لحظه با زدن یک دکمه به کاربر نمایش دهیم.
برای شروع یک پروژه از نوع Asp ایجاد میکنیم و سپس روی پروژه راست کلیک کرده ویک WebFrom ایجادمیکنیم
این نکته را خاطر نشان کنم که برای خواندن اطلاعات Excel بایستی کتابخانه زیر را دانلود کنید.
حال برای آپلود فایل , خواندن فایل از یک فایل آپلود و یک دکمه استفاده میکنیم
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CS.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style type="text/css"> body { font-family: Arial; font-size: 10pt; } table { border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; } table th { background-color: #B8DBFD; color: #333; font-weight: bold; } table th, table td { padding: 5px; border: 1px solid #ccc; } table, table table td { border: 0px solid #ccc; } </style> </head> <body> <form id="form1" runat="server"> <div> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="btnImport" runat="server" Text="نمایش " OnClick="ImportExcel" /> <hr /> <asp:GridView ID="GridView1" runat="server"> </asp:GridView> </div> </form> </body> </html>
حال فضای نام های زیر را به برنامه اضافه میکنیم
using System.IO; using System.Data; using System.Collections.Generic; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Spreadsheet;
حال برای خواندن و ذخیره اطلاعات Excel از کد های زیر استفاده میکنیم
protected void ImportExcel(object sender, EventArgs e) { //Save the uploaded Excel file. string filePath = Server.MapPath("~/Files/") + Path.GetFileName(FileUpload1.PostedFile.FileName); FileUpload1.SaveAs(filePath); //Open the Excel file in Read Mode using OpenXml. using (SpreadsheetDocument doc = SpreadsheetDocument.Open(filePath, false)) { //Read the first Sheet from Excel file. Sheet sheet = doc.WorkbookPart.Workbook.Sheets.GetFirstChild<Sheet>(); //Get the Worksheet instance. Worksheet worksheet = (doc.WorkbookPart.GetPartById(sheet.Id.Value) as WorksheetPart).Worksheet; //Fetch all the rows present in the Worksheet. IEnumerable<Row> rows = worksheet.GetFirstChild<SheetData>().Descendants<Row>(); //Create a new DataTable. DataTable dt = new DataTable(); //Loop through the Worksheet rows. foreach (Row row in rows) { //Use the first row to add columns to DataTable. if (row.RowIndex.Value == 1) { foreach (Cell cell in row.Descendants<Cell>()) { dt.Columns.Add(GetValue(doc, cell)); } } else { //Add rows to DataTable. dt.Rows.Add(); int i = 0; foreach (Cell cell in row.Descendants<Cell>()) { dt.Rows[dt.Rows.Count - 1][i] = GetValue(doc, cell); i++; } } } GridView1.DataSource = dt; GridView1.DataBind(); } } private string GetValue(SpreadsheetDocument doc, Cell cell) { string value = cell.CellValue.InnerText; if (cell.DataType != null && cell.DataType.Value == CellValues.SharedString) { return doc.WorkbookPart.SharedStringTablePart.SharedStringTable.ChildElements.GetItem(int.Parse(value)).InnerText; } return value; }
همان طور که مشاهده میکنید ابتد ا یک فولدر به نام Filles برای ذخیره فایل اکسل در پروژه ایجاد میکنیم این به این معناست که ایتدا بایستی فایل ذخیره شود وسپس با استفاده از کتابخانه OpenXml اطلاعات ذخیره شده را به نمایش میگذارد
- ASP.net
- 2k بازدید
- 3 تشکر