ورود / ثبت نام
0
0

Import فایل Excel بدون استفاده از OELDB در ASP.Net

333 بازدید
Import فایل Excel

Import فایل Excel

در این مقاله آموزش می دهیم که چگونه در ASP.Net و با استفاده از زبان های C# و VB.Net عملیات Import فایل Excel را بدون استفاده از OELDB انجام دهیم و وارد GridView کنیم.

از آنجا که از OELDB استفاده نمی کنیم، داده ها با استفاده از کتابخانه OpenXml خوانده شده و وارد GridView می شوند. با من همراه باشید ….

Import فایل Excel

دانلود کتابخانه های DocumentFormat.OpenXml و ClosedXml:

کتابخانه های گفته شده را می توانید از طریق لینک زیر دانلود نمایید:

Download OPenXml SDK 2.0

پس از دانلود این کتابخانه، باید آن را روی سیستم عامل ویندوز خود نصب کنید.

بخش HTML:

این بخش شامل یک کنترل FileUpload، یک Button و یک GridView است.

<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnImport" runat="server" Text="Import" OnClick="ImportExcel" />
<hr />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>

فضاهای نام:

فضاهای نام زیر را باید در پروژه خود وارد کنیم.

کد C#:

using System.IO;
using System.Data;
using System.Collections.Generic;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

کد VB.Net:

Imports System.IO
Imports System.Data
Imports System.Collections.Generic
Imports DocumentFormat.OpenXml.Packaging
Imports DocumentFormat.OpenXml.Spreadsheet

Import کردن فایل Excel بدون استفاده از OELDB در ASP.Net:

زمانی که روی دکمه Import کلیک می شود، event handler زیر فراخوانی می شود. ابتدا فایل Excel آپلود شده در یک فولدری با نام Files ذخیره می شود و سپس این فایل باز شده و توسط شی ای از کلاس SpreasSheetDocument که متعلق به کتابخانه OpenXml می باشد، خوانده می شود.

سپس اولین نمونه Sheet مشخص شده و تمام سطرهای آن واکشی می شوند. درنهایت حلقه تکراری روی سطرهای واکشی شده اجرا می شود و یک Data Table از آن پر می شود که به GridView متصل (Bind) می شود.

کد C#:

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;
}

کد VB.Net:

Protected Sub ImportExcel(sender As Object, e As EventArgs)
    'Save the uploaded Excel file.
    Dim filePath As String = Server.MapPath("~/Files/") + Path.GetFileName(FileUpload1.PostedFile.FileName)
    FileUpload1.SaveAs(filePath)
 
    'Open the Excel file in Read Mode using OpenXml.
    Using doc As SpreadsheetDocument = SpreadsheetDocument.Open(filePath, False)
        'Read the first Sheet from Excel file.
        Dim sheet As Sheet = doc.WorkbookPart.Workbook.Sheets.GetFirstChild(Of Sheet)()
 
        'Get the Worksheet instance.
        Dim worksheet As Worksheet = TryCast(doc.WorkbookPart.GetPartById(sheet.Id.Value), WorksheetPart).Worksheet
 
        'Fetch all the rows present in the Worksheet.
        Dim rows As IEnumerable(Of Row) = worksheet.GetFirstChild(Of SheetData)().Descendants(Of Row)()
 
        'Create a new DataTable.
        Dim dt As New DataTable()
 
        'Loop through the Worksheet rows.
        For Each row As Row In rows
            'Use the first row to add columns to DataTable.
            If row.RowIndex.Value = 1 Then
                For Each cell As Cell In row.Descendants(Of Cell)()
                    dt.Columns.Add(GetValue(doc, cell))
                Next
            Else
                'Add rows to DataTable.
                dt.Rows.Add()
                Dim i As Integer = 0
                For Each cell As Cell In row.Descendants(Of Cell)()
                    dt.Rows(dt.Rows.Count - 1)(i) = GetValue(doc, cell)
                    i += 1
                Next
            End If
        Next
        GridView1.DataSource = dt
        GridView1.DataBind()
    End Using
End Sub
 
Private Function GetValue(doc As SpreadsheetDocument, cell As Cell) As String
    Dim value As String = cell.CellValue.InnerText
    If cell.DataType IsNot Nothing AndAlso cell.DataType.Value = CellValues.SharedString Then
        Return doc.WorkbookPart.SharedStringTablePart.SharedStringTable.ChildElements.GetItem(Integer.Parse(value)).InnerText
    End If
    Return value
End Function

Import فایل Excel

نمایش داده های Excel در GridView:

Import فایل Excel

موفق باشید!

  • پسورد: www.mspsoft.com
آیا این مطلب را می پسندید؟
https://www.mspsoft.com/?p=16269
اشتراک گذاری:
واتساپتوییترفیسبوکپینترستلینکدین
داریوش فرخی
داریوش فرخی هستم از سال 92 شروع به یادگیری برنامه نویسی و از سال 93 در بخش برنامه نویسی و تولید محتوای سایت mspsoft.com مشغول هستم. فعالیتم نیز بیشتر در زمینه های برنامه نویسی با سی شارپ و asp.net بوده است. اوقات فراغتم را هم غالبا با تماشای فیلم یا بازی های کامپیوتری پر میکنم .
مطالب بیشتر
برچسب ها:

نظرات

0 نظر در مورد Import فایل Excel بدون استفاده از OELDB در ASP.Net

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هیچ دیدگاهی نوشته نشده است.