knackCoder Ответов: 1

Создать Excel с помощью epplus библиотека


Я пытаюсь создать файл excel с помощью библиотеки EPPlus на языке C#.
Однако я не могу открыть созданный файл excel с сообщением об ошибке следующим образом:
"Найдено нечитаемое содержимое".

Ссылка на библиотеку EPPlus: EPPlus-создание расширенных электронных таблиц Excel на сервере - скачать: EPPlus 4.1[^]

Пожалуйста, проверьте мой код и дайте мне знать, что я упускаю.

Что я уже пробовал:

Ниже приведен код, который я использую:

using (ExcelPackage pck = new ExcelPackage())
            {
                //Create the worksheet
                ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo");

                //Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
                ws.Cells["A1"].LoadFromDataTable(dt, true);

                //Format the header for column 1-3
                using (ExcelRange rng = ws.Cells["A1:E1"])
                {
                    rng.Style.Font.Bold = true;
                    rng.Style.Fill.PatternType = ExcelFillStyle.Solid;      
                    rng.Style.Fill.BackgroundColor.SetColor(Color.BurlyWood);  
                    rng.Style.Font.Color.SetColor(Color.White);
                }
                
                //Write it back to the client
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";            
                Response.AddHeader("content-disposition", string.Format("attachment;  filename={0}", "ExcellData.xlsx"));
                Response.BinaryWrite(pck.GetAsByteArray());
            }

Below mentioned is dummy data for DataTable which I'm currently trying to show in excel:
            DataTable dt = new DataTable();
            dt.Columns.Add("SkillID");
            dt.Columns.Add("SkillName");
            dt.Columns.Add("BehaviorID");
            dt.Columns.Add("BehaviorName");
            dt.Columns.Add("ObjectiveDesc");

            DataRow dr1 = dt.NewRow();
            dr1[0] = "s11";
            dr1[1] = "s1";
            dr1[2] = "b11";
            dr1[3] = "b1";
            dr1[4] = "obj1";
            dt.Rows.Add(dr1);


            DataRow dr2 = dt.NewRow();
            dr2[0] = "s11";
            dr2[1] = "s1";
            dr2[2] = "b22";
            dr2[3] = "b2";
            dr2[4] = "obj2";
            dt.Rows.Add(dr2);


            DataRow dr3 = dt.NewRow();
            dr3[0] = "s11";
            dr3[1] = "s1";
            dr3[2] = "b33";
            dr3[3] = "b3";
            dr3[4] = "obj3";
            dt.Rows.Add(dr3);

1 Ответов

Рейтинг:
10

Bryian Tan

Добавьте Response.End(); в конце записи, чтобы очистить все содержимое.

Response.BinaryWrite(pck.GetAsByteArray());
Response.End();


[Правильная генерация файлов Excel в .NET]


knackCoder

Спасибо. Это сработало для меня.