ในตอนเช้า มีการเพิ่มฟังก์ชันในส่วนการจัดการคำสั่งซื้อของระบบเพื่อส่งออกข้อมูลคำสั่งซื้อที่สอบถามไปยัง Excel เพื่อให้ผู้ดูแลระบบวิเคราะห์ รหัสที่เขียนไว้ก่อนหน้านี้มีดังนี้:
Response.Clear();
Response.BufferOutput = จริง;
Response.Charset = "GB2312";
Response.AppendHeader("การจัดการเนื้อหา", "ไฟล์แนบ; ชื่อไฟล์ = FileName.xls");
Response.ContentEncoding = การเข้ารหัส GetEncoding("GB2312");
Response.ContentType = "application/ms-excel";
นี้.EnableViewState = false;
System.Globalization.CultureInfo myinfo = new System.Globalization.CultureInfo("ZH-CN", จริง);
StringWriter osw = StringWriter ใหม่ (myinfo);
HtmlTextWriter ohtw = HtmlTextWriter ใหม่ (osw);
dgQueryResult.RenderControl(ohtw);
การตอบกลับเขียน(osw);
การตอบสนองสิ้นสุด();
การสืบค้นของฉันใช้เพจจิ้ง และลูกค้าต้องการให้ส่งออกข้อมูลที่สืบค้นทั้งหมดไปยัง Excel ดังนั้น ฟังก์ชันนี้ไม่สามารถทำได้โดยการส่งออกเนื้อหาของตัวควบคุมไปยัง Excel เหมือนเมื่อก่อน ดังนั้นฉันจึงเปลี่ยนโค้ดเป็น:
การตอบสนอง.Clear();
Response.BufferOutput = จริง;
Response.Charset = "GB2312";
Response.AppendHeader("การจัดการเนื้อหา", "ไฟล์แนบ; ชื่อไฟล์ = order.xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/ms-excel";
สตริง strExcelHeader = string.Empty;
สตริง strExcelItems;
if(ViewState["SQL"] != null) // รับคำสั่ง SQL ที่ใช้ในการสืบค้นก่อนหน้า
-
// รับชื่อของแต่ละคอลัมน์ แยกแต่ละชื่อด้วย t และเพิ่มอักขระขึ้นบรรทัดใหม่หลังชื่อคอลัมน์สุดท้าย
strExcelHeader = "หมายเลขคำสั่งซื้อtตัวแทนจำหน่ายtภูมิภาคtหมวดหมู่ขนาดเล็กtสินค้าโภคภัณฑ์tจำนวนที่ชำระtเวลาสั่งซื้อtสถานะที่ถูกต้องtสถานะการประมวลผลtn";
//เขียนข้อมูลที่ได้รับไปยังสตรีมเอาท์พุต HTTP
การตอบกลับเขียน(strExcelHeader);
// ประมวลผลข้อมูลผลลัพธ์แบบสอบถามทีละแถว
ITDBHandle itDbHandle = ITDBHandle ใหม่ ();
itDbHandle.QueryString = ViewState["SQL"].ToString();
เครื่องอ่าน SqlDataReader = itDbHandle.ExecuteDataReader();
ในขณะที่ (reader อ่าน ())
-
strExcelItems = string.Empty;
strExcelItems += reader["OrderID"].ToString() + "t";
strExcelItems += reader["ชื่อตัวแทนจำหน่าย"].ToString() + "t";
strExcelItems += reader["เมือง"].ToString() + "t";
strExcelItems += reader["SmallClassName"].ToString() + "t";
strExcelItems += reader["BrandName"].ToString() + reader["Model"].ToString() + "t";
strExcelItems += เครื่องอ่าน["ราคารวม"].ToString() + "t";
strExcelItems += reader["วันที่สั่งซื้อ"].ToString() + "t";
strExcelItems += reader["IsValid"].ToString() + "t";
strExcelItems += reader["DealState"].ToString() +"n";
Response.Write (strExcelItems);
-
reader.ปิด();
การตอบสนองสิ้นสุด();
-
ที่นี่ฉันเพียงแค่เขียนข้อมูลที่สืบค้นในรูปแบบของ Excel (แน่นอนว่ามันสามารถอยู่ในรูปแบบอื่น ๆ เช่น XML) ซึ่งเพียงพอสำหรับความต้องการง่ายๆ แน่นอนว่าการใช้ .NET เพื่อดำเนินการโดยตรงนั้นง่ายมากเช่นกัน ไฟล์ Excel มีตัวอย่างมากมายสำหรับการอ้างอิง