Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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# 以编程方式对Excel电子表格进行排序_C#_Excel_Sharepoint_Ms Office_Openxml - Fatal编程技术网

C# 以编程方式对Excel电子表格进行排序

C# 以编程方式对Excel电子表格进行排序,c#,excel,sharepoint,ms-office,openxml,C#,Excel,Sharepoint,Ms Office,Openxml,我正在使用OpenXML操作Excel文件 我将Excel文件作为内存流发送,编辑它们,然后将它们发送回浏览器,以便它们在客户端office程序中打开。我使用以下代码创建新的电子表格: public static void InsertWorksheet(string docName) { using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(docName, true)) { // Add a blank

我正在使用OpenXML操作Excel文件

我将Excel文件作为内存流发送,编辑它们,然后将它们发送回浏览器,以便它们在客户端office程序中打开。我使用以下代码创建新的电子表格:

public static void InsertWorksheet(string docName)
{

using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(docName, true))
{
    // Add a blank WorksheetPart.
    WorksheetPart newWorksheetPart = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>();
    newWorksheetPart.Worksheet = new Worksheet(new SheetData());

    Sheets sheets = spreadSheet.WorkbookPart.Workbook.GetFirstChild<Sheets>();
    string relationshipId = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart);

    // Get a unique ID for the new worksheet.
    uint sheetId = 1;
    if (sheets.Elements<Sheet>().Count() > 0)
    {
        sheetId = sheets.Elements<Sheet>().Select(s => s.SheetId.Value).Max() + 1;
    }

    // Give the new worksheet a name.
    string sheetName = "Sheet" + sheetId;

    // Append the new worksheet and associate it with the workbook.
    Sheet sheet = new Sheet() { Id = relationshipId, SheetId = sheetId, Name = sheetName };
    sheets.Append(sheet);
} 
}
publicstaticvoidinsertworksheet(字符串docName)
{
使用(SpreadsheetDocument电子表格=SpreadsheetDocument.Open(docName,true))
{
//添加空白工作表部件。
WorksheetPart newWorksheetPart=电子表格.WorkbookPart.AddNewPart();
newWorksheetPart.Worksheet=新工作表(new SheetData());
Sheets Sheets=电子表格.WorkbookPart.Workbook.GetFirstChild();
string relationshipId=电子表格.WorkbookPart.GetIdOfPart(新工作表部件);
//获取新工作表的唯一ID。
uint sheetId=1;
如果(sheets.Elements().Count()>0)
{
sheetId=sheets.Elements()。选择(s=>s.sheetId.Value)。Max()+1;
}
//为新工作表命名。
string sheetName=“Sheet”+sheetId;
//附加新工作表并将其与工作簿关联。
Sheet Sheet=new Sheet(){Id=relationshipId,SheetId=SheetId,Name=sheetName};
附页(页);
} 
}

我的问题是,此工作表是在工作簿中的工作表中最后添加的。我希望它是第1张。我正在寻找如何将新创建的图纸设置为1号图纸的技巧

也许可以代替
工作表。追加
你称之为在开头插入它的东西吗?是否有
Insert
Prepend
方法?

是的,确实有。谢谢你的提示。这就成功了:sheets.InsertAt(sheet,0);