ASP.NET Charts/Graph - Create Charts and Send Email Attachment |
ASP.NET Charts/Graph - Create Charts and Send Email Attachment เขียน ASP.NET สร้างกราฟและทำการแนบไฟล์ ไปพร้อมกับอีเมล์อย่างอัตโนมัติ
Framework 1.1,2.0,3.0,4,0
Excel for C# อ่านและดัดแปลงได้จากบทความนี้
ASP Charts/Graph Type ID (Excel.Application)
AspNetExcelChartsPart7.aspx
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="System.Data.OleDb"%>
<%@ Import Namespace="Excel"%>
<%@ Import Namespace="System.Web.Mail"%>
<%@ Import Namespace="System.IO"%>
<%@ Page Language="VB" %>
<script runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
Dim objConn As New OleDbConnection
Dim dtAdapter As OleDbDataAdapter
Dim dt As New System.Data.DataTable
Dim strConnString As String
strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database/mydatabase.mdb") & ";"
objConn = New OleDbConnection(strConnString)
objConn.Open()
Dim strSQL As String
strSQL = "SELECT * FROM customer"
'*** Create DataTable ***'
dtAdapter = New OleDbDataAdapter(strSQL, objConn)
dtAdapter.Fill(dt)
'*** Export To Excel ***'
Dim FileName As String = "MyXls/MyExcel.xls"
'*** Create Exce.Application ***'
Dim xlApp As New Excel.Application
Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
Dim i, intStartRows As Integer
xlBook = xlApp.Workbooks.Add()
xlSheet = xlBook.Worksheets(1)
xlApp.Application.Visible = False
'*** Delete Sheet (2,3) - Sheet Default ***'
xlBook.Worksheets(2).Select()
xlBook.Worksheets(2).Delete()
xlBook.Worksheets(2).Select()
xlBook.Worksheets(2).Delete()
'*** Sheet Data Rows ***'
xlBook.Worksheets(1).Name = "MyReport"
xlBook.Worksheets(1).Select
With xlBook.ActiveSheet.Cells(1,1)
.Value = "Customer Name"
.Font.Name = "Tahoma"
.BORDERS.Weight = 1
.Font.Size = 10
.MergeCells = True
End With
With xlBook.ActiveSheet.Cells(1,2)
.Value = "Budget"
.BORDERS.Weight = 1
.Font.Name = "Tahoma"
.Font.Size = 10
.MergeCells = True
End With
With xlBook.ActiveSheet.Cells(1,3)
.Value = "Used"
.BORDERS.Weight = 1
.Font.Name = "Tahoma"
.Font.Size = 10
.MergeCells = True
End With
intStartRows = 2
For i = 0 To dt.Rows.Count - 1
xlBook.ActiveSheet.Cells(intStartRows+i,1).Value = dt.Rows(i)("Name")
xlBook.ActiveSheet.Cells(intStartRows+i,2).Value = dt.Rows(i)("Budget")
xlBook.ActiveSheet.Cells(intStartRows+i,2).NumberFormat = "$#,##0.00"
xlBook.ActiveSheet.Cells(intStartRows+i,3).Value = dt.Rows(i)("Used")
xlBook.ActiveSheet.Cells(intStartRows+i,3).NumberFormat = "$#,##0.00"
Next
Dim objRange,colCharts,objChart As Object
objRange = xlBook.Sheets("MyReport").UsedRange
objRange.Select
'*** Creating Chart ***'
xlBook.Charts.Add
'xlBook.ActiveChart.SeriesCollection(1).Name = "Series1"
'xlBook.ActiveChart.SeriesCollection(2).Name = "Series1"
xlBook.ActiveChart.Location(2, "MyReport")
'*** Chart Properties ***'
With xlBook.ActiveChart
.ChartType = 98
.HasLegend = True
.HasTitle = 1
.ChartTitle.Text = "Customer Report"
End With
'*** Legend Font ***'
With xlBook.ActiveChart.Legend
.Font.Name = "Arial"
.Font.Size = 5
End With
'*** Set Area ***'
xlBook.ActiveSheet.Shapes("Chart 1").IncrementLeft(20)
xlBook.ActiveSheet.Shapes("Chart 1").IncrementTop(-97.5)
'*** Set Height & Width ***'
xlBook.ActiveSheet.Shapes("Chart 1").ScaleHeight(1.0, 0, 0)
xlBook.ActiveSheet.Shapes("Chart 1").ScaleWidth(1.0, 0, 0)
'*** If Files Already Exist Delete files ***'
Dim MyFile As New FileInfo(Server.MapPath(FileName))
If MyFile.Exists Then
MyFile.Delete()
End IF
MyFile = Nothing
'*** Save Excel ***'
'xlSheet.PrintOut 1 '*** Print to printer ***'
xlSheet.SaveAs(Server.MapPath(FileName))
xlApp.Application.Quit()
xlApp.Quit()
'*** Quit and Clear Object ***'
xlSheet = Nothing
xlBook = Nothing
xlApp = Nothing
'*** Send Email ***'
Dim myMail As New MailMessage()
myMail.To = "[email protected]"
myMail.From = "Webmaster <[email protected]>"
myMail.Subject = "My Charts"
myMail.BodyFormat = MailFormat.Text
myMail.Body = "Charts/Graph Report"
myMail.Attachments.Add(new MailAttachment(Server.MapPath(FileName)))
SmtpMail.Send(myMail)
myMail = Nothing
'*** ENd Send Email ***'
'*** End Export To Excel ***'
Me.lblText.Text = "Charts Created and Email Sending."
dtAdapter = Nothing
objConn.Close()
objConn = Nothing
End Sub
</script>
<html>
<head>
<title>ThaiCreate.Com ASP.NET - Excel Application</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Label id="lblText" runat="server"></asp:Label>
</form>
</body>
</html>
Screenshot
|