Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用OpenXMLC将行追加到excel文档的末尾#_C#_Excel_Openxml Sdk - Fatal编程技术网

C# 使用OpenXMLC将行追加到excel文档的末尾#

C# 使用OpenXMLC将行追加到excel文档的末尾#,c#,excel,openxml-sdk,C#,Excel,Openxml Sdk,我需要使用OpenXmlSDK将行附加到xls/xlsx文档的末尾 有一个问题,但建议的方法是在内存中分配整个工作表,这会使我的案例内存不足 我跟着,但它也会产生内存不足 是否有方法将xlsx文件添加到append?我在OpenXmlWriter中没有找到这样的选项 private static void OpenXMLSDKAppendRows(string fileName, int numRows, int numCols) { { us

我需要使用OpenXmlSDK将行附加到xls/xlsx文档的末尾

有一个问题,但建议的方法是在内存中分配整个工作表,这会使我的案例内存不足

我跟着,但它也会产生内存不足

是否有方法将
xlsx
文件添加到append?我在
OpenXmlWriter
中没有找到这样的选项

  private static void OpenXMLSDKAppendRows(string fileName, int numRows, int numCols)
    {
        {
            using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(fileName, true))
            {
                WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
                WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();

                using (OpenXmlWriter openXmlWriter = OpenXmlWriter.Create(worksheetPart))
                {
                    Row row = new Row();
                    Cell cell = new Cell();
                    CellValue value = new CellValue("Test");
                    cell.AppendChild(value);

                    openXmlWriter.WriteStartElement(new Worksheet());
                    openXmlWriter.WriteStartElement(new SheetData());
                    for (int rowIndex = 0; rowIndex < numRows; rowIndex++)
                    {
                        openXmlWriter.WriteStartElement(row);
                        for (int colIndex = 0; colIndex < numCols; colIndex++)
                        {
                            openXmlWriter.WriteElement(cell);
                        }
                        openXmlWriter.WriteEndElement();
                    }
                    openXmlWriter.WriteEndElement();
                    openXmlWriter.WriteEndElement();

                    openXmlWriter.Close();
                }
            }
        }
    }
private static void OpenXMLSDKAppendRows(字符串文件名,int numRows,int numCols)
{
{
使用(SpreadsheetDocument SpreadsheetDocument=SpreadsheetDocument.Open(文件名,true))
{
WorkbookPart WorkbookPart=电子表格文档.WorkbookPart;
WorksheetPart WorksheetPart=workbookPart.WorksheetParts.First();
使用(OpenXmlWriter OpenXmlWriter=OpenXmlWriter.Create(工作表部分))
{
行=新行();
单元格=新单元格();
CellValue=新的CellValue(“测试”);
单元格.AppendChild(值);
WriteStarteElement(新工作表());
WriteStarteElement(新的SheetData());
对于(int-rowIndex=0;rowIndex

由于LGPL许可证,我无法使用
EPPlus

引发异常的原因是您试图追加的数据量太大还是原始文件太大?当代码在一个只有几行要添加的小文件上运行时,是否会抛出该代码?@lukasz-m该特定代码段会抛出内存。OpenXmlReader在内存中分配大量数据。我需要一种.Net StreamWriter拥有的追加解决方案。由于您试图追加的数据量太大或原始文件太大,因此引发了什么异常?当代码在一个只有几行要添加的小文件上运行时,是否会抛出该代码?@lukasz-m该特定代码段会抛出内存。OpenXmlReader在内存中分配大量数据。我需要.Net StreamWriter提供的附加解决方案