在.Net中使用SAX方法打开xls文件并添加几行(大约100K)

时间:2018-05-30 16:30:16

标签: c# sax xls

我需要你的支持。 我需要用c#打开一个.xls文件,添加大约100k行。 我尝试了几种方法,但除了带有SAX方法的OpenXML之外,所有方法都会让我陷入内存错误。这个对我有用。 我的问题是我能够从头开始创建100K行的excel(它就像魅力一样),但是我无法打开文件xls,例如第一行有标题,第二行使用公式的行,并假设我要从此Excel的第三行添加100K行。 这是我的代码。 当我运行它时,文件被克隆但没有添加行...你能帮我吗? 感谢

//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);

0 个答案:

没有答案