1
我需要將我的gridview數據導出爲excel。這沒有問題。 所有工作正常 問題是我可以應用篩選器顯示在網格中的數據。當我只想導出這些數據時(一旦應用了過濾器),它會在過濾器之前導出之前包含在我的網格中的所有數據。導出Gridview到Excel:無法導出正確的數據顯示
我希望我足夠清楚......
這是我使用的代碼:
public void ExportGridToExcel(GridView grdGridView, string fileName)
{
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
grdGridView.AllowPaging = false;
grdGridView.DataBind();
//Change the Header Row back to white color
grdGridView.HeaderRow.Style.Add("background-color", "#FFFFFF");
// Apply style to Individual Cells
grdGridView.HeaderRow.Cells[0].Style.Add("background-color", "green");
grdGridView.HeaderRow.Cells[1].Style.Add("background-color", "green");
grdGridView.HeaderRow.Cells[2].Style.Add("background-color", "green");
grdGridView.HeaderRow.Cells[3].Style.Add("background-color", "green");
grdGridView.HeaderRow.Cells[4].Style.Add("background-color", "green");
grdGridView.HeaderRow.Cells[5].Style.Add("background-color", "green");
grdGridView.HeaderRow.Cells[6].Style.Add("background-color", "green");
for (int i = 0; i < grdGridView.Rows.Count; i++)
{
GridViewRow row = grdGridView.Rows[i];
// Change Color back to white
row.BackColor = System.Drawing.Color.White;
// Apply text style to each Row
row.Attributes.Add("class", "textmode");
// Apply style to Individual Cells of Alternating Row
if (i % 2 != 0)
{
row.Cells[0].Style.Add("background-color", "#C2D69B");
row.Cells[1].Style.Add("background-color", "#C2D69B");
row.Cells[2].Style.Add("background-color", "#C2D69B");
row.Cells[3].Style.Add("background-color", "#C2D69B");
row.Cells[4].Style.Add("background-color", "#C2D69B");
row.Cells[5].Style.Add("background-color", "#C2D69B");
row.Cells[6].Style.Add("background-color", "#C2D69B");
}
}
grdGridView.RenderControl(hw);
// style to format numbers to string
string style = @"<style> .textmode { mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}
我做什麼應用過濾器(所有的作品完美)
public void refreshGridFactures()
{
DateTime? debutFacture = null;
DateTime? FinFacture = null;
DateTime? DebutReglement = null;
DateTime? FinReglement = null;
int? NumeroFacture = 0;
if (PickerDateDebut.SelectedDate != null) { debutFacture = PickerDateDebut.SelectedDate; }
if (PickerDateFin.SelectedDate != null) { FinFacture = PickerDateFin.SelectedDate; }
if (PickerDebutReglement.SelectedDate != null) { DebutReglement = PickerDebutReglement.SelectedDate; }
if (PickerFinReglement.SelectedDate != null) { FinReglement = PickerFinReglement.SelectedDate; }
int IdEntreprise = Convert.ToInt32(ddlEntreprises.SelectedValue);
string Intitule = txtIntitule.Text;
if (txtNumeroFacture.Text != "") { NumeroFacture = Convert.ToInt32(txtNumeroFacture.Text); }
List<DBAccess.Facturation> listFacturation = DBAccess.DAOFacturation.GetFactures(IdEntreprise, debutFacture, FinFacture, DebutReglement, FinReglement, Intitule, NumeroFacture);
GridFactures.DataSource = listFacturation;
GridFactures.DataBind();
double total = Math.Round(listFacturation.Sum(a => a.MontantTTC), 2);
double totalHT = Math.Round(listFacturation.Sum(a => a.MontantHT), 2);
lblTotalTTC.Text = "Montant total TTC : " + total;
lblTotalHT.Text = "Montant total HT : " + totalHT;
}
感謝您的幫助
其實要導出爲HTML,因爲'grdGridView.RenderControl(HW)'將創建一個表;-) –