Giới thiệu
Mẹo này mô tả làm thế nào để xuất dữ liệu vào tập tin Excel từ GridView. Tôi sẽ tạo ra một cơ sở dữ liệu mẫu và xem làm thế nào dữ liệu có thể được hiển thị trong GridView và sau đó xuất trong định dạng Excel.
Bắt đầu
Có rất nhiều kịch bản mà tôi muốn xuất dữ liệu ra định dạng Excel. Dữ liệu có thể là từ một GridView hoặc từ bất kỳ dữ liệu khác bị ràng buộc điều khiển. Trong bài viết này, tôi sẽ xem làm thế nào chúng ta có thể xuất dữ liệu từ GridView đến Excel.
Sử dụng Mã
Trong thủ thuật này, tôi đang cố gắng để giải thích làm thế nào để tạo ra hoặc xuất GridView vào tập tin MS-Excel trong ASP.NET sử dụng C #. Tôi cũng đã đặt button trên trang để xuất dữ liệu vào tập tin Microsoft Excel. Tôi đã sử dụng GridView đó ràng buộc và button sẽ được sử dụng để tạo ra tập tin Excel.
Tôi đã có cơ sở dữ liệu có tên demodb trong đó có bảng với các cột sau:
Bây giờ khi chúng ta có cấu trúc bảng đã sẵn sàng, chúng ta có chức năng để liên kết các GridView mà tôi đã sử dụng tập dữ liệu. Vì vậy, chúng ta hãy nhìn vào mã mà fetches dữ liệu từ cơ sở dữ liệu và sau đó liên kết với các dữ liệu vào Grid để hiển thị nó trên trang web.
protected void fillGrid()
{
string str = "SELECT [UNo], [EmpName], [Age],
convert(char,[dob],103) dob FROM [tbl_EmpDetails]";
myConnection = new SqlConnection(conn);
myConnection.Open();
myCommand = new SqlCommand(str, myConnection);
SqlDataAdapter mySQLDataAdapter;
myDataSet = new DataTable();
mySQLDataAdapter = new SqlDataAdapter(myCommand);
mySQLDataAdapter.Fill(myDataSet);
GridView1.DataSource = myDataSet;
GridView1.DataBind();
ViewState["dtList"] = myDataSet;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
fillGrid();
}
}
Sau khi ràng buộc GridView, dữ liệu đã sẵn sàng để xuất sang tập tin Excel. Tôi nhấn vào button tên là Export to Excel. Tôi đã sử dụng FileInfo để có được những thông tin liên quan đến các tập tin.
FileInfo FI = new FileInfo(Path);
StringWriter stringWriter = new StringWriter();
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWriter);
DataGrid DataGrd = new DataGrid();
DataGrd.DataSource = dt1;
DataGrd.DataBind();
DataGrd.RenderControl(htmlWrite);
string directory = Path.Substring(0, Path.LastIndexOf("\\"));// GetDirectory(Path);
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
System.IO.StreamWriter vw = new System.IO.StreamWriter(Path, true);
stringWriter.ToString().Normalize();
vw.Write(stringWriter.ToString());
vw.Flush();
vw.Close();
WriteAttachment(FI.Name, "application/vnd.ms-excel", stringWriter.ToString());
Đoạn mã trên sử dụng chức năng WriteAttachment xuất tập tin đính kèm cho người dùng. Mã sau đây cho thấy việc thực hiện WriteAttachment :
public static void WriteAttachment(string FileName, string FileType, string content)
{
HttpResponse Response = System.Web.HttpContext.Current.Response;
Response.ClearHeaders();
Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
Response.ContentType = FileType;
Response.Write(content);
Response.End();
}