Witam.
Mam problem z exportem danych do excel z rozszerzeniem xlsx.
Dane z db mam już w kolekcji IEnumerable
i potrzebuje utworzyć nowy dokument excel z hederami wartościami z listy.
public void ExportExcel(int _documentId)
{
var myList = Db.odwołanieDoProceduryDbZwracającejListeobiektów(_documentId); //lista obiektów
Export.ToExcel(Response, myList, _documentId);
}
private class Export
{
public static void ToExcel(HttpResponseBase response, object myList, int id)
{
var grid = new System.Web.UI.WebControls.GridView
{
DataSource = myList
};
grid.DataBind();
response.ClearContent();
response.Buffer = true;
response.AddHeader("content-disposition", "attachment; filename=Kalkulacje" + id + ".xls"); // po zmienie na xlsx podmienić wartość poniżej
response.ContentType = "application/vnd.ms-excel"; // application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
response.Charset = "";
var sw = new StringWriter();
//var esw = new ExtentedStringWriter(new StringBuilder(), new UTF8Encoding());
var htw = new HtmlTextWriter(sw);
grid.RenderControl(htw);
response.Write(sw.ToString());
response.End();
}
}
w powyższym przykładzie starałem się to zrobić ale za każdym razem przy próbie otworzenia w formacie xls wyskakuje alert o niewłaściwym rozszerzeniu ale po otworzeniu dostaję moje dane ale ze zmienionymi polskimi znakami.
Natomiast po podmianie na format xlsx pliku nie można otworzyć zupełnie.
Zależy mi, żeby metoda ta mogła być uniwersalna bez ręcznego ustawiania hederów.
Ale nie upieram się na tej formie rozwiązania problemu. Rozważałem też zastosowanie OleDb.
Z góry dziękuję za pomoc.