使用 openxml 将行追加到 azure blob 存储中的 excel
Posted
技术标签:
【中文标题】使用 openxml 将行追加到 azure blob 存储中的 excel【英文标题】:Append rows to excel in azure blob storage using openxml 【发布时间】:2021-10-08 16:33:58 【问题描述】:我正在使用 openxml 在 azure blob 中生成一个 excel 文件,我想将行附加到 blob 中的 excel 文件中,而不会将整个文件加载到内存中。文件可能非常大,所以我想从数据库中获取大块数据并继续附加数据。
我尝试过使用
var storageAccount = CloudStorageAccount.Parse("Connection string");
// Connect to the blob storage
var serviceClient = storageAccount.CreateCloudBlobClient();
// Connect to the blob container
var container = serviceClient.GetContainerReference("Container name");
await container.CreateIfNotExistsAsync();
var appendBlob = container.GetAppendBlobReference(fileName);
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(appendBlob.Uri.ToString(), true))
WorkbookPart workbookpart = spreadsheetDocument.WorkbookPart;
WorksheetPart worksheetPart = workbookpart.WorksheetParts.First();
var worksheet = worksheetPart.Worksheet;
SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
Row lastRow = sheetData.Elements<Row>().LastOrDefault();
if (lastRow != null)
sheetData.InsertAfter(new Row() RowIndex = lastRow.RowIndex + 1 , dataRow);
workbookpart.Workbook.Save();
// Close the document.
spreadsheetDocument.Close();
memStream.Seek(0, SeekOrigin.Begin);
await appendBlob.AppendFromStreamAsync(memoryStream);
SpreadsheetDocument.Open 无法打开文件进行追加。有办法吗?
【问题讨论】:
【参考方案1】:希望您附加到现有文件。请查看以下是否可能是您打开文件问题的情况。
请检查您是否在SpreadsheetDocument.Open(file path name,true);
中提供了正确的文件路径名
查看文件路径名是否为 .xlsx 格式。
由于代码已经在使用“using (SpreadsheetDocument sp………….)””,因此不需要使用SpreadsheetDocument.close();
语句.您可以删除该语句并重试。
由于using语句,任务完成后工作表会自动关闭。
否则尝试使用 SpreadsheetDocument.Open(file path, FileMode.Open,FileMode.Read,Filemode.Write,...)
【讨论】:
以上是关于使用 openxml 将行追加到 azure blob 存储中的 excel的主要内容,如果未能解决你的问题,请参考以下文章