ASP และ Excel ถูกรวมเข้าด้วยกันเพื่อสร้างโค้ดสำหรับตารางข้อมูลและแผนภูมิ เพื่อนๆ ที่ต้องการความช่วยเหลือสามารถอ้างอิงได้ สารบัญ
1. การกำหนดค่าสภาพแวดล้อม
2. การทำงานพื้นฐานของ ASP บน Excel
3. ASP ใช้งาน Excel เพื่อสร้างตารางข้อมูล
4. ASP ใช้งาน Excel เพื่อสร้างแผนภูมิ
5. โซลูชันการเรียกดู ดาวน์โหลด และลบไฟล์ Excel ฝั่งเซิร์ฟเวอร์
6. ภาคผนวก
ข้อความ
1. การกำหนดค่าสภาพแวดล้อม
เกี่ยวกับการกำหนดค่าสภาพแวดล้อมฝั่งเซิร์ฟเวอร์ เมื่อพิจารณาจากเอกสารอ้างอิง การกำหนดค่าซีรีส์ Microsoft ทั้งหมดควรจะใช้ได้ กล่าวคือ:
1. Win9x+PWS+สำนักงาน
2. Win2000 Professional+PWS+สำนักงาน
3. เซิร์ฟเวอร์ Win2000+IIS+Office
ในปัจจุบันสภาพแวดล้อมที่ผู้เขียนทดสอบได้สำเร็จคือสองสภาพแวดล้อมหลัง ไม่มีข้อกำหนดพิเศษสำหรับเวอร์ชัน Office เมื่อพิจารณาถึงความไม่แน่นอนของการกำหนดค่าไคลเอ็นต์และความเข้ากันได้ต่ำ ขอแนะนำว่าเวอร์ชัน Office ฝั่งเซิร์ฟเวอร์ไม่ควรสูงเกินไปเพื่อป้องกันไม่ให้ไคลเอ็นต์ไม่สามารถแสดงได้อย่างถูกต้องหลังจากดาวน์โหลด
การค้นพบโดยบังเอิญอีกสองประการเกี่ยวกับการกำหนดค่าสภาพแวดล้อมฝั่งเซิร์ฟเวอร์คือ:
1. เดิมทีเครื่องพัฒนาของผู้เขียนติดตั้ง WPS2002 ของ Kingsoft แต่มีปัญหากับการสร้างวัตถุ Excel อยู่เสมอ หลังจากถอนการติดตั้ง WPS2002 ข้อผิดพลาดก็หายไป
2. ผู้เขียนชอบใช้ FrontPage เมื่อพัฒนาโค้ด ASP ปรากฎว่าหากเปิด FrontPage (ฝั่งเซิร์ฟเวอร์) การสร้างวัตถุจะไม่เสถียร บางครั้งก็สำเร็จ และบางครั้งก็ไม่สำเร็จ หลังจากการตรวจสอบอย่างละเอียด เราพบว่าหากซอฟต์แวร์ซีรีส์ Office ทำงานบนฝั่งเซิร์ฟเวอร์ การสร้างออบเจ็กต์ Excel ให้สำเร็จเป็นเรื่องยาก
อีกสิ่งหนึ่งที่ต้องตั้งค่าบนฝั่งเซิร์ฟเวอร์คือการอนุญาตการดำเนินการของส่วนประกอบ COM พิมพ์ DCOMCNFG บนบรรทัดคำสั่งเพื่อเข้าสู่อินเทอร์เฟซการกำหนดค่าคอมโพเนนต์ COM เลือก Microsoft Excel แล้วคลิกปุ่มคุณสมบัติ เลือกกำหนดเอง สำหรับทั้งสามตัวเลือก ในระหว่างการแก้ไข ให้เพิ่มทุกคนในการอนุญาตทั้งหมด หลังจากบันทึกแล้ว ให้รีสตาร์ทเซิร์ฟเวอร์
ไม่มีอะไรพิเศษเกี่ยวกับการกำหนดค่าสภาพแวดล้อมของไคลเอ็นต์ ตราบใดที่มีการติดตั้ง Office และ IE เวอร์ชันสากลใดๆ ก็ดูเหมือนว่าจะใช้ได้
2. การทำงานพื้นฐานของ ASP บน Excel
1. สร้างวัตถุ Excel
ตั้งค่า objExcelApp = CreateObject(Excel.Application)
objExcelApp.DisplayAlerts = false ไม่แสดงคำเตือน
objExcelApp.Application.Visible = false ไม่แสดงอินเทอร์เฟซ
2. สร้างไฟล์ Excel ใหม่
objExcelApp.WorkBooks.add
ตั้งค่า objExcelBook = objExcelApp.ActiveWorkBook
ตั้งค่า objExcelSheets = objExcelBook.Worksheets
ตั้ง objExcelSheet = objExcelBook.Sheets(1)
3. อ่านไฟล์ Excel ที่มีอยู่
strAddr = เซิร์ฟเวอร์ MapPath(.)
objExcelApp.WorkBooks.Open (strAddr & /Templet/Table.xls)
ตั้งค่า objExcelBook = objExcelApp.ActiveWorkBook
ตั้งค่า objExcelSheets = objExcelBook.Worksheets
ตั้ง objExcelSheet = objExcelBook.Sheets(1)
4. บันทึกไฟล์ Excel เป็น
objExcelBook.SaveAs strAddr & /Temp/Table.xls
5. บันทึกไฟล์ Excel
objExcelBook.Save (ผู้เขียนบันทึกสำเร็จเมื่อทำการทดสอบ แต่หน้ารายงานข้อผิดพลาด)
6. ออกจากการทำงานของ Excel
objExcelApp.Quit ต้องออก
ตั้ง objExcelApp = ไม่มีเลย
3. ASP ใช้งาน Excel เพื่อสร้างตารางข้อมูล
1. แทรกข้อมูลในช่วง
objExcelSheet.Range(B3:k3).Value = อาร์เรย์(67, 87, 5, 9, 7, 45, 45, 54, 54, 10)
2. แทรกข้อมูลลงในเซลล์
objExcelSheet.Cells(3,1).Value=Internet Explorer
3. เปลี่ยนสีข้อความของเซลล์
objExcelSheet.Cells(3,1).Font.Color=vbred
4. ลากเส้นรอบเซลล์
objExcelSheet.Cells(3.1).Borders(1).LineStyle =1
objExcelSheet.Cells(3.1).Borders(2).LineStyle =1
objExcelSheet.Cells(3.1).Borders(3).LineStyle =1
objExcelSheet.Cells(3.1).Borders(4).LineStyle =1
ลากเส้นตรงกลางพื้นที่
objExcelSheet.Range(A1:G7).Borders(7).LineStyle =1
objExcelSheet.Range(A1:G7).Borders(8).LineStyle =1
8. ตั้งค่าสีพื้นหลังของเซลล์
objExcelSheet.Cells(3.1).Interior.colorindex=17
9. รวมเซลล์
objExcelSheet.Range (A1: G7) ผสาน
10. ตั้งค่าการจัดตำแหน่งซ้ายและขวา
2 ซ้าย 3 กลาง 4 ขวา
objExcelSheet.Range(A1).การจัดตำแหน่งแนวนอน = 2
11. ตั้งค่าการจัดตำแหน่งด้านบนและด้านล่าง
2 อยู่ตรงกลาง
objExcelSheet.Range(A1)..VerticalAlignment = 2
4. ASP ใช้งาน Excel เพื่อสร้างแผนภูมิ
1. สร้างแผนภูมิแผนภูมิ
objExcelApp.Charts.Add
2. ตั้งค่าประเภทแผนภูมิ
objExcelApp.ActiveChart.ChartType = 97
หมายเหตุ: แผนภูมิเส้นสองมิติ 4; แผนภูมิวงกลมสองมิติ 5;
3. ตั้งชื่อแผนภูมิ
objExcelApp.ActiveChart.HasTitle = จริง
objExcelApp.ActiveChart.ChartTitle.Text = แผนภูมิทดสอบ
4. ตั้งค่ากราฟิกผ่านข้อมูลตาราง
objExcelApp.ActiveChart.SetSourceData objExcelSheet.Range(A1:k5),1
5. ตั้งค่าข้อมูลกราฟิกโดยตรง (แนะนำ)
objExcelApp.ActiveChart.SeriesCollection.NewSeries
objExcelApp.ActiveChart.SeriesCollection(1).ชื่อ = =333
objExcelApp.ActiveChart.SeriesCollection(1).ค่า = =
6. ผูกแผนภูมิ
objExcelApp.ActiveChart.ตำแหน่ง 1
7. แสดงตารางข้อมูล
objExcelApp.ActiveChart.HasDataTable = จริง
8. แสดงคำอธิบาย
objExcelApp.ActiveChart.DataTable.ShowLegendKey = จริง
5. โซลูชันการเรียกดู ดาวน์โหลด และลบไฟล์ Excel ฝั่งเซิร์ฟเวอร์
มีวิธีแก้ไขปัญหามากมายสำหรับการเรียกดู รวมถึง Location.href=, Navigate และ Response.Redirect ขอแนะนำให้ใช้วิธีไคลเอ็นต์ เนื่องจากจะทำให้เซิร์ฟเวอร์มีเวลามากขึ้นในการสร้างไฟล์ Excel
การใช้งานการดาวน์โหลดนั้นยุ่งยากกว่าเล็กน้อย เป็นทางออกที่ดีกว่าในการดาวน์โหลดส่วนประกอบจากเซิร์ฟเวอร์สำเร็จรูปบนอินเทอร์เน็ต หรือปรับแต่งและพัฒนาส่วนประกอบด้วยตนเอง อีกวิธีหนึ่งคือการใช้งานส่วนประกอบ Excel บนไคลเอนต์ และไคลเอนต์ดำเนินการไฟล์ Excel ฝั่งเซิร์ฟเวอร์และบันทึกลงในไคลเอนต์ วิธีนี้ต้องการให้ไคลเอ็นต์เปิดสิทธิ์ในการดำเนินการของตัวควบคุม ActiveX ที่ไม่ปลอดภัย เมื่อพิจารณาถึงปัญหาในการแจ้งลูกค้าแต่ละรายให้ตั้งค่าเซิร์ฟเวอร์เป็นไซต์ที่เชื่อถือได้ ขอแนะนำให้ใช้วิธีแรกเพื่อบันทึกปัญหา
แผนการลบประกอบด้วยสามส่วน:
ตอบ: ไฟล์ Excel ที่สร้างโดยผู้ใช้คนเดียวกันจะใช้ชื่อไฟล์เดียวกัน ชื่อไฟล์สามารถประกอบด้วยหมายเลข ID ผู้ใช้หรือหมายเลข ID เซสชันเพื่อให้แน่ใจว่าสตริงจะไม่ซ้ำกัน วิธีนี้ไฟล์ใหม่จะเขียนทับไฟล์ก่อนหน้าโดยอัตโนมัติเมื่อสร้างขึ้น
B: เมื่อเหตุการณ์ Session_onEnd ถูกตั้งค่าในไฟล์ Global.asa ให้เริ่มทำงาน ให้ลบไฟล์ชั่วคราว Excel ของผู้ใช้รายนี้
C: เมื่อเหตุการณ์ Application_onStart ถูกตั้งค่าในไฟล์ Global.asa ให้เริ่มทำงาน ให้ลบไฟล์ทั้งหมดในไดเร็กทอรีชั่วคราว
หมายเหตุ: โครงสร้างไดเร็กทอรีที่แนะนำ/ไดเร็กทอรีรหัส Src/ไดเร็กทอรีเทมเพลต Templet/ไดเร็กทอรีหน่วยเก็บข้อมูลชั่วคราวชั่วคราว
6. ภาคผนวก
กระบวนการที่ไม่ทำงานของ Excel เมื่อเกิดข้อผิดพลาดทำให้ปวดหัว การเพิ่ม On Error Resume Next ก่อนแต่ละไฟล์จะช่วยปรับปรุงสถานการณ์นี้ เนื่องจากจะยังคงดำเนินการ Application.Quit ต่อไป ไม่ว่าไฟล์จะสร้างข้อผิดพลาดหรือไม่ เพื่อให้มั่นใจว่าไม่มีกระบวนการที่เสียหายเหลืออยู่หลังจากการเรียกใช้โปรแกรมแต่ละครั้ง
เพิ่มเติมสองจุด:
1. การดำเนินการเฉพาะอื่นๆ ของ Excel สามารถแก้ไขได้ด้วยการบันทึกมาโคร
2. การเปิด SQL Enterprise Manager บนฝั่งเซิร์ฟเวอร์ก็จะทำให้เกิดปัญหาเช่นกัน
คัดลอกรหัสรหัสดังต่อไปนี้:
-
OnErrorResumeNextstrAddr=Server.MapPath(.)setobjExcelApp=CreateObject(Excel.Application)
objExcelApp.DisplayAlerts=false
objExcelApp.Application.Visible=false
objExcelApp.WorkBooks.Open(strAddr&/Templet/Null.xls)
setobjExcelBook=objExcelApp.ActiveWorkBook
setobjExcelSheets=objExcelBook.แผ่นงาน
setobjExcelSheet=objExcelBook.Sheets(1)objExcelSheet.Range(B2:k2).Value=Array(Week1,Week2,Week3,Week4,Week5,Week6,Week7,
สัปดาห์ที่ 8 สัปดาห์ที่ 9 สัปดาห์ที่ 10)
objExcelSheet.Range(B3:k3).Value=Array(67,87,5,9,7,45,45,54,54,10)
objExcelSheet.Range(B4:k4).Value=Array(10,10,8,27,33,37,50,54,10,10)
objExcelSheet.Range(B5:k5).Value=Array(23,3,86,64,60,18,5,1,36,80)
objExcelSheet.Cells(3,1).Value=InternetExplorer
objExcelSheet.Cells(4,1).Value=Netscape
objExcelSheet.Cells(5,1).Value=OtherobjExcelSheet.Range(b2:k5).เลือก
objExcelApp.Charts.Add
objExcelApp.ActiveChart.ChartType=97
objExcelApp.ActiveChart.BarShape=3
objExcelApp.ActiveChart.HasTitle=True
objExcelApp.ActiveChart.ChartTitle.Text=
บันทึกผู้เยี่ยมชมสำหรับแต่ละสัปดาห์ที่แสดงเบราว์เซอร์เปอร์เซ็นต์
objExcelApp.ActiveChart.SetSourceDataobjExcelSheet.Range (A1:k5),1
objExcelApp.ActiveChart.Location1
'objExcelApp.ActiveChart.HasDataTable=True
'objExcelApp.ActiveChart.DataTable.ShowLegendKey=TrueobjExcelBook
SaveAsstrAddr&/Temp/Excel.xlsobjExcelApp.Quit
setobjExcelApp=ไม่มีอะไร
-
<!DOCTYPEHTMLPUBLIC-//W3C//DTDHTML4.0Transitional//EN>
<HTML>
<หัว>
<TITLE>เอกสารใหม่</TITLE>
<METANAME=GeneratorCONTENT=MicrosoftFrontPage5.0>
<METANAME=ผู้เขียนเนื้อหา=>
<METANAME=คำหลักCONTENT=>
<METANAME=คำอธิบายเนื้อหา=>
</HEAD>
<ร่างกาย>
</ร่างกาย>
</HTML>