我从流中获取一个 .xlsx 文档(使用SpreadsheetDocument.Open(stream, false)然后将其存储到 Spreadsheetdocument 字段中,以便我稍后可以维护相同的对象。
我有一个保存方法,理想情况下我应该能够将 SpreadsheetDocument 保存到流中。有,document..WorkbookPart.Workbook.Save(stream);但这只是给了我一个空文件,当我只保存第一张表时(使用document.WorkbookPart.WorksheetParts.First().Worksheet.Save(stream);该文件很混乱并且不包含相关信息。如何将电子表格文档保存到流中?
我有一个包含3列的网格:第一个网格的Width设置为“ *”,我被认为会使其填满其他列剩余的空间。第二个的宽度为8,第三个的宽度设置为“自动”,因此其大小根据其内容而变化。
在第二列中,我有一个GridSplitter,以便在拖动时可以更改第一列和第三列的宽度。这样做很好,问题是我在第三列中有一个网格,当切换该网格时,其可见性将设置为折叠。折叠时,我需要第一列来填充所有剩余空间。我尝试了许多方法:
HorizontalAlignment在第一列上设置为StretchGrid.Rowspan将第一列的可视范围与第三列的可视范围绑定在一起,以便在隐藏时,行跨度将变为3,并且由于其宽度使用“ *”,因此理论上应该使用所有3列中的所有可用空间。奇怪的是,如果我不使用来调整列的大小GridSplitter,那么第一列将正确填充所有剩余空间。但是,调整大小后,第一列不会退缩。就像在拖动GridSplitter来调整列大小时,WPF几乎将两列的宽度更改为绝对值,而不是其星形和自动值,从而使其在调整大小后不会填充空间。
要求的XAML代码(压缩):
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid x:Name="AssetListViewGrid" Grid.Column="0" Grid.RowSpan="{Binding Visibility, ElementName=AssetViewMetadataSplitter, Converter={StaticResource SplitterVisibilityToRowSpanConverter}}" Margin="0 4 0 4">
<!-- irrelevant code -->
</Grid>
<GridSplitter x:Name="AssetViewMetadataSplitter" Grid.Column="1" Opacity="0.8" HorizontalAlignment="Center" Width="6" Margin="3 5 1 5" ToolTip="Grab to resize" Visibility="{Binding IsChecked, ElementName=GridHeaderVisibilityToggleButton, Converter={StaticResource VisConverter}}"/>
<Grid x:Name="MetadataGrid" Margin="4 2 4 2" Grid.Column="2" DataContext="{Binding MetadataViewModel}" Visibility="{Binding IsChecked, ElementName=GridHeaderVisibilityToggleButton, Converter={StaticResource VisConverter}}">
<!-- irrelevant code -->
</Grid>
Run Code Online (Sandbox Code Playgroud)