Откройте файл xls с SAX-подходом в .Net и добавьте несколько строк (около 100 КБ) - PullRequest
0 голосов
/ 30 мая 2018

Мне нужна ваша поддержка.Мне нужно открыть файл .xls с помощью c #, добавив около 100 тыс. Строк.Я попробовал несколько подходов, но все подходы приводят к ошибке памяти, кроме OpenXML с SAX-подходом.Этот работает для меня.Моя проблема в том, что я могу создать Excel с 100K строк с нуля (и это работает как шарм), но я не могу открыть файл xls, который, например, имеет первый ряд с заголовками, второй ряд с формулами,и предположим, что я должен добавить 100K строк из третьего ряда этого Excel.Это мой кодКогда я запускаю его, файл клонируется, но строки не добавляются ... не могли бы вы мне помочь?Спасибо

//copy of file
String str_IntermidiateXLSPath = "c:\\testXls3.xlsx";
File.Copy("c:\\testXls.xlsx", str_IntermidiateXLSPath, true);
using (SpreadsheetDocument SpreadsheetDocumentObj = SpreadsheetDocument.Open(str_IntermidiateXLSPath, true))
{
    WorkbookPart workbookpart = null;
    WorksheetPart worksheetpart = null;
    OpenXmlWriter writer = null;
    Cell cell = null;
    Row row = null;

    SpreadsheetDocumentObj.CompressionOption = CompressionOption.SuperFast;
    workbookpart = SpreadsheetDocumentObj.WorkbookPart;
    worksheetpart = workbookpart.WorksheetParts.First();

    writer = OpenXmlWriter.Create(worksheetpart);
    writer.WriteStartElement(new Worksheet());
    writer.WriteStartElement(new SheetData());
    //starting row
    for (int i = 3; i < 80; i++)
    {
        row = new Row();
        for (int j = 0; j < 10; j++)
        {
            cell = new Cell();
            row.Append(cell);

            cell.DataType = CellValues.InlineString;
            cell.InlineString = new InlineString { Text = new Text { Text = "XXX" } };
        }

        writer.WriteElement(row);
    }

    writer.WriteEndElement();
    writer.WriteEndElement();
    writer.Close();
    workbookpart.Workbook.Save();
    SpreadsheetDocumentObj.Close();
}
Process.Start(str_IntermidiateXLSPath);
...