1

我正在使用ClosedXML将数据从 SQL 数据表导出到 Excel。

这是导出的一部分:(dt 是一个数据表,其中包含来自 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 吗?

4

1 回答 1

2

可能有助于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");

或者

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

        //after this 
            wb.Worksheets.Add(dt);
于 2014-04-11T08:55:49.520 回答