2016-12-28 33 views
0

Я хочу объединить ячейки в excel с помощью SAX-подхода с openxmlwriter. Я использовал этот подход вместо подхода DOM, чтобы написать тысячи записей, чтобы преуспеть.Объединить ячейки в Excel с помощью «Openxml writer»

+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

Измените свой вопрос и объясните, почему это ответ. Удалите избыточный код. Это * не * полезный ответ –

 Смежные вопросы

  • Нет связанных вопросов^_^