我已经编写了以下方法,将多个Memorystream绑定到ziparchive。该代码适用于一个流,但是如果我通过迭代添加多个流,则它将在for循环的第二行中显示以下错误。
function onEdit(){
var tabLists = "Leagues";
var tabValidation = "2018";
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var datass = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(tabLists);
var activeCell = ss.getActiveCell();
if(activeCell.getColumn() == 6 && activeCell.getRow() > 1 && ss.getSheetName() == tabValidation){
activeCell.offset(0, 1).clearContent().clearDataValidations();
var makes = datass.getRange(1, 1, 1, datass.getLastColumn()).getValues();
var makeIndex = makes[0].indexOf(activeCell.getValue()) + 1;
if(makeIndex != 0){
var validationRange = datass.getRange(3, makeIndex, datass.getLastRow());
var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
activeCell.offset(0, 1).setDataValidation(validationRule);
}
}
}
我的代码,
System.IO.IOException: 'Entries cannot be created
while previously created entries are still open.'
答案 0 :(得分:2)
在打开的using
上您大概错过了Stream
?
using (var zip = new ZipArchive(outputStream, ZipArchiveMode.Create, leaveOpen: false))
{
for (int i = 0; i < msList.Count; i++)
{
msList[i].Position = 0;
var createenter = zip.CreateEntry("123"+i+".jpg",
CompressionLevel.Optimal);
using (var s = createenter.Open())
{
msList[i].CopyTo(s);
}
}
}