2017-10-06 60 views
0

我需要編寫一個對象列表作爲表格,其中每列表示對象屬性或值。對於下面的方法,Im傳遞列名中的列名和列表中的數據對象,我設法得到如下所示的數據,但仍然無法讓列正確顯示。使用已關閉的XML編寫excel - 添加自定義列名稱

我介紹了下面的文檔,但我找不到一個方法來正確顯示標題。 https://github.com/closedxml/closedxml/wiki/Inserting-Tables

代碼

public string CreateExcelFile<T>(IEnumerable<T> list, string sheetName, string headerTitle, List<string> titles, string fileName, string savedPath) 
{ 
    var wb = new XLWorkbook(); 
    var ws = wb.Worksheets.Add(sheetName); 

    ws.Cell(1, 1).Value = headerTitle;     // sets excel sheet header 

    var rangeTitle = ws.Range(3, 1, 3, titles.Count); // range for row 3, column 1 to row 3, column titles.Count 
    rangeTitle.AddToNamed("Titles"); 

    // Need to add columns names with in rangeTitle 
    //rangeTitle.InsertData(titles); 

    // write data from row 4 onwards 
    if (list != null && list.Any()) 
    { 
     ws.Cell(4, 1).InsertData(list);     
    } 
    else 
    { 
     ws.Cell(4, 1).Value = "No data to show"; 
    } 

    // styles 
    var titlesStyle = wb.Style; 
    titlesStyle.Font.Bold = true; 
    titlesStyle.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; 
    titlesStyle.Fill.BackgroundColor = XLColor.Amber; 

    // style titles row 
    wb.NamedRanges.NamedRange("Titles").Ranges.Style = titlesStyle; 

    ws.Columns().AdjustToContents(); 
    var filePath = savedPath + string.Format("{0}.xlsx", fileName); 
    wb.SaveAs(filePath); 

    return filePath; 
} 

輸出Excel中

enter image description here

輸出我試着去得到 - 我需要存儲在黃色標題值突出顯示的行。 enter image description here

任何人都可以幫忙嗎?

回答

0

我設法通過下面的操作來顯示列。

// Need to add columns names with in rangeTitle 
for (int i = 0; i < titles.Count; i++) 
{ 
    var columnNumber = i + 1; 
    ws.Cell(3, columnNumber).Value = titles[i]; 
} 

現在可以使用。但是,我不知道是否有更好的方法來做事(不需要像上面那樣手動分配列名)。

相關問題