ClosedXML и цифры как текст

Я использую ClosedXML для экспорта данных из таблицы данных SQL в Excel.

Это часть экспорта: (dt — это datatable с данными из SQL Server)

 using (XLWorkbook wb = new XLWorkbook())
            {
                wb.Worksheets.Add(dt);

                Response.Clear();
                Response.Buffer = true;
                Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.ContentType = "application/vnd.ms-excel";
                Response.AddHeader("content-disposition", "attachment;filename=Report.xlsx");
                using (MemoryStream MyMemoryStream = new MemoryStream())
                {
                    wb.SaveAs(MyMemoryStream);
                    MyMemoryStream.WriteTo(Response.OutputStream);
                    Response.Flush();
                    Response.End();
                }
            }

Проблемы:

  • После экспорта все цифры в виде текста

  • Десятичные цифры имеют точку, но должны иметь запятую

Пожалуйста, может кто-нибудь помочь мне, как правильно форматировать мой экспорт в Excel?


person user3322321    schedule 18.02.2014    source источник
comment
Какой тип данных имеют столбцы в вашем SQL и в DataTable?   -  person Raidri    schedule 19.02.2014


Ответы (1)


Может помочь ClosedXmlDocumetnation

Сопоставьте данные с DataTypes

     private DataTable GetTable()
    {

        DataTable table = new DataTable();
        table.Columns.Add("Dosage", typeof(int));
        table.Columns.Add("Drug", typeof(string));
        table.Columns.Add("Patient", typeof(string));
        table.Columns.Add("Date", typeof(DateTime));


        return table;
    }

        // From a DataTable
        var dataTable = GetTable();
        ws.Cell(7, 1).Value = "From DataTable";
        var tableWithData = ws.Cell(8, 1).InsertTable(dataTable.AsEnumerable());
        ws.Columns().AdjustToContents();

        wb.SaveAs("InsertingTables.xlsx");

or

            dataTable.Columns[0].DataType = typeof(Int32);
            dataTable.Columns[1].DataType = typeof(string);
            dataTable.Columns[2].DataType = typeof(Int32);

        //after this 
            wb.Worksheets.Add(dt);
person Eldho    schedule 11.04.2014