توضیحات و دانلود

خروج کنترل نمودار به فایل اکسل با شرح با استفاده از C # و VB.Net در ASP.Net
0 0
خروج کنترل نمودار به فایل اکسل با شرح با استفاده از C # و VB.Net در ASP.Net

با سلام در این مقاله با یک مثال خروج کنترل نمودار به فایل اکسل با شرح با استفاده از C # و VB.Net در ASP.Net را نشان خواهیم داد .
کد HTML
کد HTML شامل یک کنترل نمودار ASP.Net برای ایجاد یک نمودار پای و یک دکمه برای شروع فرایند خروج از اکسل است.

<asp:Label ID="Label1" runat="server" Text="Fruits Distribution (India)" ForeColor = "Red"></asp:Label>
<br />
<asp:Chart ID="Chart1" runat="server" Height="300px" Width="400px">
    <Titles>
        <asp:Title ShadowOffset="3" Name="Items" />
    </Titles>
    <Legends>
        <asp:Legend Alignment="Center" Docking="Bottom" IsTextAutoFit="False" Name="Default"
            LegendStyle="Row" />
    </Legends>
    <Series>
        <asp:Series Name="Default" />
    </Series>
    <ChartAreas>
       <asp:ChartArea Name="ChartArea1" BorderWidth="0" />
    </ChartAreas>
</asp:Chart>
<br />
<asp:Button ID="btnExportExcel" runat="server" Text="Export to Excel" OnClick="btnExportExcel_Click" />

تغییرات در فایل Web.Config
تغییرات زیر مشخص شده در Yellow باید در فایل Web.Config انجام شود.
توجه :

ویژگیهای DeleteAfterServaching و privateImages در صورت خروج از اکسل از مهمترین موارد هستند که در غیر این صورت در فایل اکسل تصویر نمودار را نخواهید دید. بنابراین اطمینان حاصل کنید که این ویژگی ها همیشه false هستند.

<configuration>
    <appSettings>
        <add key="ChartImageHandler" value="storage=file;timeout=20;deleteAfterServicing=false;privateImages=false" />
    </appSettings>
    <system.web>
        <compilation debug="true" targetFramework="4.0">
            <assemblies>
                <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            </assemblies>
        </compilation>
        <httpHandlers>
            <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
        </httpHandlers>
        <pages>
            <controls>
                <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            </controls>
        </pages>
    </system.web>
    <system.webServer>
        <handlers>
            <remove name="ChartImageHandler" />
            <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
                path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        </handlers>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>

فضاهای نام
باید نامهای زیر را وارد کنید.
C #

using System.IO;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Web.UI.DataVisualization.Charting;

VB.Net

Imports System.IO
Imports System.Drawing
Imports System.Text.RegularExpressions
Imports System.Web.UI.DataVisualization.Charting

جمع آوری نمودار پای از DataTable با استفاده از کنترل نمودار
در داخل رویداد Page Load ، نمودار Pie با استفاده از برخی از داده های نمونه ایجاد می شود.
C #

protected void Page_Load(object sender, EventArgs e)
{
    string[] x = new string[4] { "Mango", "Apple", "Orange", "Banana" };
    int[] y = new int[4] { 200, 112, 55, 96 };
    Chart1.Series[0].Points.DataBindXY(x, y);
    Chart1.Series[0].ChartType = SeriesChartType.Pie;
    Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;
    Chart1.Legends[0].Enabled = true;
}

 VB.Net

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    Dim x() As String = New String() {"Mango", "Apple", "Orange", "Banana"}
    Dim y() As Integer = New Integer() {200, 112, 55, 96}
    Chart1.Series(0).Points.DataBindXY(x, y)
    Chart1.Series(0).ChartType = SeriesChartType.Pie
    Chart1.ChartAreas("ChartArea1").Area3DStyle.Enable3D = True
    Chart1.Legends(0).Enabled = True
End Sub

خروج نمودار به کاربرگ اکسل 
با کلیک بر روی دکمه Export ، ابتدا نمودار به صورت HTML ارائه می شود و سپس تصویر URL نمودار از تصویر با استفاده از عبارات منظم از HTML استخراج می شود.
سپس یک جدول پویا ایجاد و یک برچسب برای نمایش Caption به آن اضافه می شود. سپس یک عنصر HTML Image با استفاده از کنترل Literal به جدول اضافه می شود.
سرانجام جدول به عنوان رشته HTML به عنوان فایل اکسل خارج ودانلود می شود.
C #

protected void btnExportExcel_Click(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=ChartExport.xls");
    Response.ContentType = "application/vnd.ms-excel";
    Response.Charset = "";
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    Chart1.RenderControl(hw);
    string src = Regex.Match(sw.ToString(), "<img.+?src=[\"'](.+?)[\"'].+?>", RegexOptions.IgnoreCase).Groups[1].Value;
    string img = string.Format("<img src = '{0}{1}' />", Request.Url.GetLeftPart(UriPartial.Authority), src);
 
    Table table = new Table();
    TableRow row = new TableRow();
    row.Cells.Add(new TableCell());
    row.Cells[0].Width = 200;
    row.Cells[0].HorizontalAlign = HorizontalAlign.Center;
    row.Cells[0].Controls.Add(new Label { Text = "Fruits Distribution (India)", ForeColor = Color.Red });
    table.Rows.Add(row);
    row = new TableRow();
    row.Cells.Add(new TableCell());
    row.Cells[0].Controls.Add(new Literal { Text = img });
    table.Rows.Add(row);
 
    sw = new StringWriter();
    hw = new HtmlTextWriter(sw);
    table.RenderControl(hw);
    Response.Write(sw.ToString());
    Response.Flush();
    Response.End();
}

VB.Net

Protected Sub btnExportExcel_Click(sender As Object, e As EventArgs)
    Response.Clear()
    Response.Buffer = True
    Response.AddHeader("content-disposition", "attachment;filename=ChartExport.xls")
    Response.ContentType = "application/vnd.ms-excel"
    Response.Charset = ""
    Dim sw As New StringWriter()
    Dim hw As New HtmlTextWriter(sw)
    Chart1.RenderControl(hw)
    Dim src As String = Regex.Match(sw.ToString(), "<img.+?src=[""'](.+?)[""'].+?>", RegexOptions.IgnoreCase).Groups(1).Value
    Dim table As String = "<table><tr><td><img src='{0}' /></td></tr></table>"
    table = String.Format(table, Request.Url.GetLeftPart(UriPartial.Authority) + src)
    Response.Write(table)
    Response.Flush()
    Response.End()
End Sub

 عکس صفحه

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :