2016-12-28 132 views
0

我想通過使用openxmlwriter的SAX方法在excel中合併單元格。我用這些方法代替了DOM方法,就是要寫出數千條記錄才能成爲excel。使用「Openxml writer」在Excel中合併單元格

+0

你介意分享自己的最新代碼編寫代碼合併單元格? –

+0

成千上萬不是一個大數字。你有沒有嘗試過使用像EPPlus這樣的庫? –

回答

0

我分享這段代碼可以幫助別人使用OpenXmlWriter(OpenXML的SAX)

 /*OpenXMLWriter to write large data to excel to avoid System.OutOfMemoryException*/ 
       OpenXmlWriter oxw = OpenXmlWriter.Create(wsPart); 
       oxw.WriteStartElement(new Worksheet()); 
       /*Excel column style */ 
       oxw.WriteStartElement(new Columns()); 
       foreach (var item in gridHeaderList) 
       { 
        oxw.WriteStartElement(new Column(), new List<OpenXmlAttribute>() 
        { new OpenXmlAttribute("min", null, (item.columnIndex + 1).ToString()), 
         new OpenXmlAttribute("max", null, (item.columnIndex + 1).ToString()), 
         new OpenXmlAttribute("width", null, item.columnWidth.ToString()) 
        } 
        ); 

        oxw.WriteEndElement(); 
       } 

       oxw.WriteEndElement(); 
       /*End of Columns element node*/ 

       /*Sheet data node*/ 
       oxw.WriteStartElement(new SheetData()); 

       oxw.WriteStartElement(new Row()); 
       foreach (var item in dataList) 
       { 
        oxw.WriteElement(new Cell() { CellValue = new CellValue(item.Value), DataType = CellValues.String, StyleIndex = item.styleIndex }); 
       } 
       oxw.WriteEndElement(); 

       oxw.WriteEndElement(); 
       /*End of sheetdata element node*/ 

       /*Start of MergeCells element node NOTE: Make sure initialize "A6:D6" range cells   */  
    oxw.WriteStartElement(new MergeCells()); 
        oxw.WriteElement(new MergeCell() { Reference = new StringValue("A6:D6") }); 
        oxw.WriteEndElement(); 
        /*End of MergeCells element node*/ 


       oxw.WriteEndElement(); 
       /*End of worksheet element node*/ 

       oxw.Close(); 
+1

代碼只回答沒有解釋沒有幫助,特別是當90%的代碼是*不*相關的問題 –

+0

請在結束和結束工作表元素之前找到代碼,這是我需要使用OpenXMLWriter合併單元格。 – user3766483

+1

編輯你的問題並解釋爲什麼這是一個答案。刪除冗餘代碼。這是*不是一個有用的答案 –

相關問題