ClosedXML删除了第一行

时间:2015-04-09 05:23:00

标签: c# closedxml

我使用ClosedXML导出Excel文件。我的问题是:1-第一行删除2-宽度的列未应用。我认为第一行被删除,因为我使用2行标题,我试图解决它,但没有工作。这是我的源代码:

protected void ExportExcel()
{
    String constr = "Password=*****;Persist Security Info=True;User ID=*****;Initial Catalog=*****;Data Source=******;";
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand("select ServiceName,Sdate,Dfrom,Dto,Peroid,Activity,Sector,WorkStation,Place,ConNumber,ErrorDes,Solutions from ServiceCrashies where Sdate between '" + Request.Form[FromDate.UniqueID] + "' and '" + Request.Form[ToDate.UniqueID] + "'"))
        {
            //con.Open();
            //int numberofrows = cmd.ExecuteNonQuery();
            //System.Diagnostics.Debug.WriteLine("Numberof rows" + numberofrows);

            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                using (DataTable dt = new DataTable())
                {
                    try
                    {
                        sda.Fill(dt);
                        using (XLWorkbook wb = new XLWorkbook())
                        {
                            var ws = wb.Worksheets.Add(dt, "الأعطال");
                            Response.Clear();
                            Response.Buffer = true;
                            Response.Charset = "";
                            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                            Response.AddHeader("content-disposition", "attachment;filename=WeeklyReport.xlsx");
                            using (MemoryStream MyMemoryStream = new MemoryStream())
                            {
                                var rngHeaders = ws.Range("A1:L2");
                                ws.Rows().AdjustToContents();
                                ws.Columns().AdjustToContents();
                                rngHeaders.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                                rngHeaders.Style.Font.Bold = true;
                                rngHeaders.Style.Fill.BackgroundColor = XLColor.OrangeRyb;
                                rngHeaders.Style.Border.OutsideBorder = XLBorderStyleValues.Thick;
                                rngHeaders.Style.Border.InsideBorder = XLBorderStyleValues.Thin;
                                rngHeaders.Cell("A1").Value = "اسم الخدمة";
                                rngHeaders.Cell("B1").Value = "التاريخ";
                                rngHeaders.Cell("A2").Value = " ";
                                rngHeaders.Cell("B2").Value = " ";
                                rngHeaders.Range("C1:E1").Merge();
                                rngHeaders.Cell("C1").Value = "وقت الانقطاع"; 
                                rngHeaders.Cell("C2").Value = "من";
                                rngHeaders.Cell("D2").Value = "إلى";
                                rngHeaders.Cell("E2").Value = "المدة";
                                rngHeaders.Range("F1:J1").Merge();
                                rngHeaders.Cell("F1").Value = "الجهةالجهات المتضررة";
                                rngHeaders.Cell("F2").Value = "النشاط";
                                rngHeaders.Cell("G2").Value = "القطاع";
                                rngHeaders.Cell("H2").Value = "منطقة الإعمال";
                                rngHeaders.Cell("I2").Value = "الموقع/المدينة";
                                rngHeaders.Cell("J2").Value = "عدد المستفيدين المتأثرين";
                                rngHeaders.Cell("K1").Value = "وصف المشكلة وأسباب حدوثها";
                                rngHeaders.Cell("L1").Value = "الحل/الإجراء المتبع";
                                rngHeaders.Cell("K2").Value = " ";
                                rngHeaders.Cell("L2").Value = " ";

                                wb.SaveAs(MyMemoryStream);
                                MyMemoryStream.WriteTo(Response.OutputStream);
                                Response.Flush();
                                Response.End();
                            }
                        }
                    }
                    catch (SqlException ex) { }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

  1. 在将数据表放入工作表后,您正在将值写入第1行和第2行中的单元格。在定义ws.FirstRow().InsertRowsAbove(2);之前使用rngHeaders
  2. 填写单元格后使用ws.Rows().AdjustToContents();。 ClosedXml需要知道单元格中的内容以调整其宽度(并且您不需要第二次调用ws.Columns().AdjustToContents();)。