ในแอปพลิเคชันบนเว็บ เราไม่สามารถส่งออกรายงานเช่นแอปพลิเคชัน Windows ได้ เนื่องจากโปรแกรมถูกดำเนินการบนฝั่งเซิร์ฟเวอร์ เมื่อดำเนินการส่งออก ผลลัพธ์ก็จะอยู่ที่ฝั่งเซิร์ฟเวอร์เช่นกัน แล้วเราจะบรรลุการส่งออกฝั่งไคลเอ็นต์โดยสมบูรณ์ได้อย่างไร จริงๆ แล้วนี่ไม่ใช่เรื่องยาก วิธีการคือ: ส่งออกรายงานไปยังไฟล์รายงานชั่วคราวที่สร้างไว้ล่วงหน้าบนเว็บไซต์บางแห่ง จากนั้นใช้คำสั่ง response.redirect() เพื่อชี้ URL ของเบราว์เซอร์ไปยังตำแหน่งรายงาน เพื่อให้ เบราว์เซอร์ของผู้ใช้จะพยายามดาวน์โหลดไฟล์ที่เพิ่งส่งออกและไฟล์จะถูกดาวน์โหลดไปยังไคลเอนต์ดังนั้นจึงบรรลุผลที่เราต้องการ ส่วนหนึ่งของรหัสจะเป็นดังนี้:
สตริงสาธารณะ ExportReport()
-
ExportOptions creo = ใหม่ ExportOptions();
DiskFileDestinationOptions crdo = DiskFileDestinationOptions ใหม่ ();
string FileName = Request.PhysicalApplicationPath + "ExportFileExap.xls";
//ตั้งค่าตัวเลือกการส่งออก
creo = Myrpt.ExportOptions;
creo.ExportFormatType = ExportFormatType.Excel;
creo.ExportDestinationType = ExportDestinationType.DiskFile;
// ตั้งค่าตัวเลือกไฟล์ดิสก์
crdo.DiskFileName = ชื่อไฟล์;
creo.DestinationOptions = crdo;
//ส่งออกรายงาน
MyRpt.ส่งออก();
กลับชื่อไฟล์;
} }
โมฆะส่วนตัว buttonExport_Click (ผู้ส่งวัตถุ System.EventArgs e)
-
ชื่อไฟล์สตริง = รายงานการส่งออก ();
Response.Redirect(แทนที่(ชื่อไฟล์,คำขอ.PhysicalApplicationPath + "ส่งออกไฟล์", ""));
-
โปรดทราบว่าเมื่อส่งออกไปยังเว็บ คุณต้องมีสิทธิ์ในการสร้างไฟล์ในไดเร็กทอรีส่งออก หากการอนุญาตไม่เพียงพอ ข้อผิดพลาด "การเข้าถึงไฟล์รายงานถูกปฏิเสธ..." จะปรากฏขึ้น เพียงปล่อยให้ผู้ใช้ ASPNET (ผู้ใช้ระบบสร้างขึ้นโดยอัตโนมัติเมื่อติดตั้ง .NET Framework) มีสิทธิ์ "เขียน" ในไฟล์ไดเร็กทอรีส่งออก