我想用某些列自定义Excel输出结果。现在我导出excel工作正常,但它显示太多列。我想只导出某些列。知道怎么做吗?
public void ExportFilteredHistorydDataToExcel()
{
try
{
// getting session data from the grid
var claims = (List<ClaimsArchived>)Session["allclaims"];
GridView gv = new GridView();
gv.DataSource = claims;
gv.DataBind();
Response.Clear();
Response.Buffer = true;
//Response.Charset = "";
//Response.ContentType = "application/vnd.ms-excel";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=filteredHistoryClaims.xls");
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}
catch (Exception ex)
{
Console.WriteLine("There is a problem exporting data to Excel Spreadsheet.", ex);
}
}
和模型
public partial class ClaimsArchived
{
public int Claim_ID { get; set; }
public String Provider
{
get
{
if (Provider_Group == 73)
{
return "CEP";
}
else if (Provider_Group == 72)
{
return "CASE";
}
else
{
return "???";
}
}
}
[Display(Name = "Provider Num")]
public Nullable<int> Provider_Group { get; set; }
public string Facility { get; set; }
public string Physician { get; set; }
[Display(Name = "Last")]
public string Patient_Last { get; set; }
[Display(Name = "First")]
public string Patient_First { get; set; }
[Display(Name = "DOB")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> Patient_DOB { get; set; }
public int Age
{
get
{
DateTime date = DateTime.Today;
DateTime birthday = Convert.ToDateTime(Patient_DOB);
int tempage = date.Year - birthday.Year;
return tempage;
}
}
public string Funding_Type
{
get
{
DateTime date = DateTime.Today;
DateTime birthday = Convert.ToDateTime(Patient_DOB);
int compareAge = date.Year - birthday.Year;
if (compareAge > 20)
{
return "MADDY";
}
else
{
return "RICHIE";
}
}
}
[Display(Name = "Gender")]
public string Patient_Gender { get; set; }
/// <summary>
/// temp remove that from the output and export -- SSNs are sensitive information so that's why disabled in this case
/// </summary>
[Display(Name = "SSN")]
[DisplayFormat(ApplyFormatInEditMode = false, DataFormatString = "{0:###-##-####}")]
public Nullable<int> Patient_SSN { get; set; }
[Display(Name = "Zip")]
public string Patient_Zip { get; set; }
public string Diagnosis { get; set; }
[Display(Name = "Total Charges")]
public Nullable<decimal> Total_Charges { get; set; }
[Display(Name = "EMS Rate")]
public Nullable<decimal> Total_EMS { get; set; }
public bool Paid { get; set; }
//public bool Paid { get; set; }
[Display(Name = "Paid Date")]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> Paid_date { get; set; }
[Display(Name = "Unique ID")]
public Nullable<int> Unique_ID { get; set; }
[Display(Name = "Import Date")]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> ImportDate { get; set; }
[Display(Name = "Arh Date")]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> ArchiveDate { get; set; }
[Display(Name = "Archived")]
public bool ArchiveYesNo { get; set; }
}
我想从Excel中删除四列,如SSN,导入日期,Arch Date和Archived列。任何的想法?谢谢!
答案 0 :(得分:0)
// hiding the column header -- Added code start here ---
gv.HeaderRow.Cells[0].Visible = false;
// hiding the column detail
for (int i = 0; i < gv.Rows.Count; i++)
{
GridViewRow row = gv.Rows[i];
row.Cells[0].Visible = false;
}
// ------------------ Added code ended here ------
// following code are the same
gv.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();