找回密码
 立即注册

QQ登录

只需一步,快速开始

easypower

注册会员

3

主题

7

帖子

36

积分

注册会员

积分
36

活字格认证

最新发帖
easypower
注册会员   /  发表于:2012-4-17 18:29  /   查看:10371  /  回复:13
我们想实现简单的bs的excel功能,希望保存的模板及数据都存放在数据库中,经过测试,有以下疑问
1、通过IDE的设计器设计后的模板如何直接变成文本格式,从aspx中复制需要处理转义字符,不太方便
2、通过IDE设计器设计后的xml与通过后台代码Save文件流生成的xml不同,save生成的xml缺少一些内容。Button1_Click是通过IDE设计器设计后的xml,Button2_Click可以生成后台xml,Button3_Click是将Button2_Click生成的后台xml设置成控件的designString.
3、因为Save文件流生成的xml好像缺少一些配置,导致有部分Data数据无法显示,可以直接运行后点击Button3测试。
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Spread.Test.Default" %>

  2. <%@ Register Assembly="FarPoint.Web.Spread, Version=6.0.3505.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457"
  3.     Namespace="FarPoint.Web.Spread" TagPrefix="FarPoint" %>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head runat="server">
  7.     <title></title>
  8. </head>
  9. <body>
  10.     <form id="form1" runat="server">
  11.     <div>
  12.         <FarPoint:FpSpread ID="FpSpread1" runat="server" BorderStyle="Solid"
  13.             BorderWidth="1px" BorderColor="Black" DesignString='<?xml version="1.0" encoding="utf-8"?><Spread />'
  14.             EnableTheming="True" ActiveSheetViewIndex="0"
  15.             currentPageIndex="0" Height="230px" Width="556px">
  16.             <Sheets>
  17.                 <FarPoint:SheetView SheetName="Sheet1"
  18.                     DesignString="&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&amp;lt;Sheet&amp;gt;&amp;lt;Data&amp;gt;&amp;lt;RowHeader class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetDataModel&amp;quot; rows=&amp;quot;6&amp;quot; columns=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;AutoCalculation&amp;gt;True&amp;lt;/AutoCalculation&amp;gt;&amp;lt;AutoGenerateColumns&amp;gt;True&amp;lt;/AutoGenerateColumns&amp;gt;&amp;lt;ReferenceStyle&amp;gt;A1&amp;lt;/ReferenceStyle&amp;gt;&amp;lt;Iteration&amp;gt;False&amp;lt;/Iteration&amp;gt;&amp;lt;MaximumIterations&amp;gt;1&amp;lt;/MaximumIterations&amp;gt;&amp;lt;MaximumChange&amp;gt;0.001&amp;lt;/MaximumChange&amp;gt;&amp;lt;/RowHeader&amp;gt;&amp;lt;ColumnHeader class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetDataModel&amp;quot; rows=&amp;quot;1&amp;quot; columns=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;AutoCalculation&amp;gt;True&amp;lt;/AutoCalculation&amp;gt;&amp;lt;AutoGenerateColumns&amp;gt;True&amp;lt;/AutoGenerateColumns&amp;gt;&amp;lt;ReferenceStyle&amp;gt;A1&amp;lt;/ReferenceStyle&amp;gt;&amp;lt;Iteration&amp;gt;False&amp;lt;/Iteration&amp;gt;&amp;lt;MaximumIterations&amp;gt;1&amp;lt;/MaximumIterations&amp;gt;&amp;lt;MaximumChange&amp;gt;0.001&amp;lt;/MaximumChange&amp;gt;&amp;lt;/ColumnHeader&amp;gt;&amp;lt;DataArea class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetDataModel&amp;quot; rows=&amp;quot;6&amp;quot; columns=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;AutoCalculation&amp;gt;True&amp;lt;/AutoCalculation&amp;gt;&amp;lt;AutoGenerateColumns&amp;gt;True&amp;lt;/AutoGenerateColumns&amp;gt;&amp;lt;ReferenceStyle&amp;gt;A1&amp;lt;/ReferenceStyle&amp;gt;&amp;lt;Iteration&amp;gt;False&amp;lt;/Iteration&amp;gt;&amp;lt;MaximumIterations&amp;gt;1&amp;lt;/MaximumIterations&amp;gt;&amp;lt;MaximumChange&amp;gt;0.001&amp;lt;/MaximumChange&amp;gt;&amp;lt;SheetName&amp;gt;Sheet1&amp;lt;/SheetName&amp;gt;&amp;lt;Cells&amp;gt;&amp;lt;Cell row=&amp;quot;1&amp;quot; column=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;Data type=&amp;quot;System.String&amp;quot;&amp;gt;用户名称&amp;lt;/Data&amp;gt;&amp;lt;/Cell&amp;gt;&amp;lt;Cell row=&amp;quot;1&amp;quot; column=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;Data type=&amp;quot;System.String&amp;quot;&amp;gt;性别&amp;lt;/Data&amp;gt;&amp;lt;/Cell&amp;gt;&amp;lt;Cell row=&amp;quot;2&amp;quot; column=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;Data type=&amp;quot;System.String&amp;quot;&amp;gt;下拉测试&amp;lt;/Data&amp;gt;&amp;lt;/Cell&amp;gt;&amp;lt;/Cells&amp;gt;&amp;lt;/DataArea&amp;gt;&amp;lt;SheetCorner class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetDataModel&amp;quot; rows=&amp;quot;1&amp;quot; columns=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;AutoCalculation&amp;gt;True&amp;lt;/AutoCalculation&amp;gt;&amp;lt;AutoGenerateColumns&amp;gt;True&amp;lt;/AutoGenerateColumns&amp;gt;&amp;lt;ReferenceStyle&amp;gt;A1&amp;lt;/ReferenceStyle&amp;gt;&amp;lt;Iteration&amp;gt;False&amp;lt;/Iteration&amp;gt;&amp;lt;MaximumIterations&amp;gt;1&amp;lt;/MaximumIterations&amp;gt;&amp;lt;MaximumChange&amp;gt;0.001&amp;lt;/MaximumChange&amp;gt;&amp;lt;/SheetCorner&amp;gt;&amp;lt;ColumnFooter class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetDataModel&amp;quot; rows=&amp;quot;1&amp;quot; columns=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;AutoCalculation&amp;gt;True&amp;lt;/AutoCalculation&amp;gt;&amp;lt;AutoGenerateColumns&amp;gt;True&amp;lt;/AutoGenerateColumns&amp;gt;&amp;lt;ReferenceStyle&amp;gt;A1&amp;lt;/ReferenceStyle&amp;gt;&amp;lt;Iteration&amp;gt;False&amp;lt;/Iteration&amp;gt;&amp;lt;MaximumIterations&amp;gt;1&amp;lt;/MaximumIterations&amp;gt;&amp;lt;MaximumChange&amp;gt;0.001&amp;lt;/MaximumChange&amp;gt;&amp;lt;/ColumnFooter&amp;gt;&amp;lt;/Data&amp;gt;&amp;lt;Presentation&amp;gt;&amp;lt;AxisModels&amp;gt;&amp;lt;Column class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetAxisModel&amp;quot; orientation=&amp;quot;Horizontal&amp;quot; count=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;Items&amp;gt;&amp;lt;Item index=&amp;quot;-1&amp;quot;&amp;gt;&amp;lt;SortIndicator&amp;gt;Ascending&amp;lt;/SortIndicator&amp;gt;&amp;lt;/Item&amp;gt;&amp;lt;/Items&amp;gt;&amp;lt;/Column&amp;gt;&amp;lt;RowHeaderColumn class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetAxisModel&amp;quot; defaultSize=&amp;quot;40&amp;quot; orientation=&amp;quot;Horizontal&amp;quot; count=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Items&amp;gt;&amp;lt;Item index=&amp;quot;-1&amp;quot;&amp;gt;&amp;lt;SortIndicator&amp;gt;Ascending&amp;lt;/SortIndicator&amp;gt;&amp;lt;Size&amp;gt;40&amp;lt;/Size&amp;gt;&amp;lt;/Item&amp;gt;&amp;lt;/Items&amp;gt;&amp;lt;/RowHeaderColumn&amp;gt;&amp;lt;ColumnHeaderRow class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetAxisModel&amp;quot; defaultSize=&amp;quot;22&amp;quot; orientation=&amp;quot;Vertical&amp;quot; count=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Items&amp;gt;&amp;lt;Item index=&amp;quot;-1&amp;quot;&amp;gt;&amp;lt;Size&amp;gt;22&amp;lt;/Size&amp;gt;&amp;lt;/Item&amp;gt;&amp;lt;/Items&amp;gt;&amp;lt;/ColumnHeaderRow&amp;gt;&amp;lt;ColumnFooterRow class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetAxisModel&amp;quot; defaultSize=&amp;quot;22&amp;quot; orientation=&amp;quot;Vertical&amp;quot; count=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Items&amp;gt;&amp;lt;Item index=&amp;quot;-1&amp;quot;&amp;gt;&amp;lt;Size&amp;gt;22&amp;lt;/Size&amp;gt;&amp;lt;/Item&amp;gt;&amp;lt;/Items&amp;gt;&amp;lt;/ColumnFooterRow&amp;gt;&amp;lt;/AxisModels&amp;gt;&amp;lt;StyleModels&amp;gt;&amp;lt;RowHeader class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetStyleModel&amp;quot; Rows=&amp;quot;6&amp;quot; Columns=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;AltRowCount&amp;gt;2&amp;lt;/AltRowCount&amp;gt;&amp;lt;DefaultStyle class=&amp;quot;FarPoint.Web.Spread.NamedStyle&amp;quot; Parent=&amp;quot;RowHeaderDefault&amp;quot; /&amp;gt;&amp;lt;ConditionalFormatCollections /&amp;gt;&amp;lt;/RowHeader&amp;gt;&amp;lt;ColumnHeader class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetStyleModel&amp;quot; Rows=&amp;quot;1&amp;quot; Columns=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;AltRowCount&amp;gt;2&amp;lt;/AltRowCount&amp;gt;&amp;lt;DefaultStyle class=&amp;quot;FarPoint.Web.Spread.NamedStyle&amp;quot; Parent=&amp;quot;ColumnHeaderDefault&amp;quot;&amp;gt;&amp;lt;Background class=&amp;quot;FarPoint.Web.Spread.Background&amp;quot;&amp;gt;&amp;lt;BackgroundImageUrl&amp;gt;SPREADCLIENTPATH:/img/chbg.gif&amp;lt;/BackgroundImageUrl&amp;gt;&amp;lt;SelectedBackgroundImageUrl&amp;gt;SPREADCLIENTPATH:/img/chm.png&amp;lt;/SelectedBackgroundImageUrl&amp;gt;&amp;lt;/Background&amp;gt;&amp;lt;/DefaultStyle&amp;gt;&amp;lt;ConditionalFormatCollections /&amp;gt;&amp;lt;/ColumnHeader&amp;gt;&amp;lt;DataArea class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetStyleModel&amp;quot; Rows=&amp;quot;6&amp;quot; Columns=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;AltRowCount&amp;gt;2&amp;lt;/AltRowCount&amp;gt;&amp;lt;DefaultStyle class=&amp;quot;FarPoint.Web.Spread.NamedStyle&amp;quot; Parent=&amp;quot;DataAreaDefault&amp;quot; /&amp;gt;&amp;lt;CellStyles&amp;gt;&amp;lt;CellStyle Row=&amp;quot;1&amp;quot; Column=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;c class=&amp;quot;FarPoint.Web.Spread.TextCellType&amp;quot;&amp;gt;&amp;lt;t /&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/CellStyle&amp;gt;&amp;lt;CellStyle Row=&amp;quot;1&amp;quot; Column=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;c class=&amp;quot;FarPoint.Web.Spread.RadioButtonListCellType&amp;quot;&amp;gt;&amp;lt;i&amp;gt;&amp;lt;m t=&amp;quot;男&amp;quot; v=&amp;quot;0&amp;quot; /&amp;gt;&amp;lt;m t=&amp;quot;女&amp;quot; v=&amp;quot;1&amp;quot; /&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/CellStyle&amp;gt;&amp;lt;CellStyle Row=&amp;quot;2&amp;quot; Column=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;c class=&amp;quot;FarPoint.Web.Spread.ComboBoxCellType&amp;quot;&amp;gt;&amp;lt;h&amp;gt;&amp;lt;d t=&amp;quot;A&amp;quot; v=&amp;quot;0&amp;quot; /&amp;gt;&amp;lt;d t=&amp;quot;B&amp;quot; v=&amp;quot;1&amp;quot; /&amp;gt;&amp;lt;/h&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/CellStyle&amp;gt;&amp;lt;/CellStyles&amp;gt;&amp;lt;ConditionalFormatCollections /&amp;gt;&amp;lt;/DataArea&amp;gt;&amp;lt;SheetCorner class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetStyleModel&amp;quot; Rows=&amp;quot;1&amp;quot; Columns=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;AltRowCount&amp;gt;2&amp;lt;/AltRowCount&amp;gt;&amp;lt;DefaultStyle class=&amp;quot;FarPoint.Web.Spread.NamedStyle&amp;quot; Parent=&amp;quot;CornerDefault&amp;quot;&amp;gt;&amp;lt;Background class=&amp;quot;FarPoint.Web.Spread.Background&amp;quot;&amp;gt;&amp;lt;BackgroundImageUrl&amp;gt;SPREADCLIENTPATH:/img/chbg.gif&amp;lt;/BackgroundImageUrl&amp;gt;&amp;lt;SelectedBackgroundImageUrl&amp;gt;SPREADCLIENTPATH:/img/chm.png&amp;lt;/SelectedBackgroundImageUrl&amp;gt;&amp;lt;/Background&amp;gt;&amp;lt;/DefaultStyle&amp;gt;&amp;lt;ConditionalFormatCollections /&amp;gt;&amp;lt;/SheetCorner&amp;gt;&amp;lt;ColumnFooter class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetStyleModel&amp;quot; Rows=&amp;quot;1&amp;quot; Columns=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;AltRowCount&amp;gt;2&amp;lt;/AltRowCount&amp;gt;&amp;lt;DefaultStyle class=&amp;quot;FarPoint.Web.Spread.NamedStyle&amp;quot; Parent=&amp;quot;ColumnFooterDefault&amp;quot; /&amp;gt;&amp;lt;ConditionalFormatCollections /&amp;gt;&amp;lt;/ColumnFooter&amp;gt;&amp;lt;/StyleModels&amp;gt;&amp;lt;MessageRowStyle class=&amp;quot;FarPoint.Web.Spread.Appearance&amp;quot;&amp;gt;&amp;lt;BackColor&amp;gt;LightYellow&amp;lt;/BackColor&amp;gt;&amp;lt;ForeColor&amp;gt;Red&amp;lt;/ForeColor&amp;gt;&amp;lt;/MessageRowStyle&amp;gt;&amp;lt;SheetCornerStyle class=&amp;quot;FarPoint.Web.Spread.NamedStyle&amp;quot; Parent=&amp;quot;CornerDefault&amp;quot;&amp;gt;&amp;lt;Background class=&amp;quot;FarPoint.Web.Spread.Background&amp;quot;&amp;gt;&amp;lt;BackgroundImageUrl&amp;gt;SPREADCLIENTPATH:/img/chbg.gif&amp;lt;/BackgroundImageUrl&amp;gt;&amp;lt;SelectedBackgroundImageUrl&amp;gt;SPREADCLIENTPATH:/img/chm.png&amp;lt;/SelectedBackgroundImageUrl&amp;gt;&amp;lt;/Background&amp;gt;&amp;lt;/SheetCornerStyle&amp;gt;&amp;lt;AllowLoadOnDemand&amp;gt;false&amp;lt;/AllowLoadOnDemand&amp;gt;&amp;lt;LoadRowIncrement &amp;gt;10&amp;lt;/LoadRowIncrement &amp;gt;&amp;lt;LoadInitRowCount &amp;gt;30&amp;lt;/LoadInitRowCount &amp;gt;&amp;lt;AllowVirtualScrollPaging&amp;gt;false&amp;lt;/AllowVirtualScrollPaging&amp;gt;&amp;lt;TopRow&amp;gt;0&amp;lt;/TopRow&amp;gt;&amp;lt;PreviewRowStyle class=&amp;quot;FarPoint.Web.Spread.PreviewRowInfo&amp;quot; /&amp;gt;&amp;lt;/Presentation&amp;gt;&amp;lt;Settings&amp;gt;&amp;lt;Name&amp;gt;Sheet1&amp;lt;/Name&amp;gt;&amp;lt;Categories&amp;gt;&amp;lt;Appearance&amp;gt;&amp;lt;GridLineColor&amp;gt;#d0d7e5&amp;lt;/GridLineColor&amp;gt;&amp;lt;SelectionBackColor&amp;gt;#eaecf5&amp;lt;/SelectionBackColor&amp;gt;&amp;lt;SelectionBorder class=&amp;quot;FarPoint.Web.Spread.Border&amp;quot; /&amp;gt;&amp;lt;/Appearance&amp;gt;&amp;lt;Behavior&amp;gt;&amp;lt;EditTemplateColumnCount&amp;gt;2&amp;lt;/EditTemplateColumnCount&amp;gt;&amp;lt;GroupBarText&amp;gt;Drag a column to group by that column.&amp;lt;/GroupBarText&amp;gt;&amp;lt;/Behavior&amp;gt;&amp;lt;Layout&amp;gt;&amp;lt;RowHeaderColumnCount&amp;gt;1&amp;lt;/RowHeaderColumnCount&amp;gt;&amp;lt;ColumnHeaderRowCount&amp;gt;1&amp;lt;/ColumnHeaderRowCount&amp;gt;&amp;lt;RowCount&amp;gt;6&amp;lt;/RowCount&amp;gt;&amp;lt;ColumnCount&amp;gt;5&amp;lt;/ColumnCount&amp;gt;&amp;lt;/Layout&amp;gt;&amp;lt;/Categories&amp;gt;&amp;lt;ActiveRow&amp;gt;2&amp;lt;/ActiveRow&amp;gt;&amp;lt;ActiveColumn&amp;gt;1&amp;lt;/ActiveColumn&amp;gt;&amp;lt;ColumnHeaderRowCount&amp;gt;1&amp;lt;/ColumnHeaderRowCount&amp;gt;&amp;lt;ColumnFooterRowCount&amp;gt;1&amp;lt;/ColumnFooterRowCount&amp;gt;&amp;lt;PrintInfo&amp;gt;&amp;lt;Header /&amp;gt;&amp;lt;Footer /&amp;gt;&amp;lt;ZoomFactor&amp;gt;0&amp;lt;/ZoomFactor&amp;gt;&amp;lt;FirstPageNumber&amp;gt;1&amp;lt;/FirstPageNumber&amp;gt;&amp;lt;Orientation&amp;gt;Auto&amp;lt;/Orientation&amp;gt;&amp;lt;PrintType&amp;gt;All&amp;lt;/PrintType&amp;gt;&amp;lt;PageOrder&amp;gt;Auto&amp;lt;/PageOrder&amp;gt;&amp;lt;BestFitCols&amp;gt;False&amp;lt;/BestFitCols&amp;gt;&amp;lt;BestFitRows&amp;gt;False&amp;lt;/BestFitRows&amp;gt;&amp;lt;PageStart&amp;gt;-1&amp;lt;/PageStart&amp;gt;&amp;lt;PageEnd&amp;gt;-1&amp;lt;/PageEnd&amp;gt;&amp;lt;ColStart&amp;gt;-1&amp;lt;/ColStart&amp;gt;&amp;lt;ColEnd&amp;gt;-1&amp;lt;/ColEnd&amp;gt;&amp;lt;RowStart&amp;gt;-1&amp;lt;/RowStart&amp;gt;&amp;lt;RowEnd&amp;gt;-1&amp;lt;/RowEnd&amp;gt;&amp;lt;ShowBorder&amp;gt;True&amp;lt;/ShowBorder&amp;gt;&amp;lt;ShowGrid&amp;gt;True&amp;lt;/ShowGrid&amp;gt;&amp;lt;ShowColor&amp;gt;True&amp;lt;/ShowColor&amp;gt;&amp;lt;ShowColumnHeader&amp;gt;Inherit&amp;lt;/ShowColumnHeader&amp;gt;&amp;lt;ShowRowHeader&amp;gt;Inherit&amp;lt;/ShowRowHeader&amp;gt;&amp;lt;ShowColumnFooter&amp;gt;Inherit&amp;lt;/ShowColumnFooter&amp;gt;&amp;lt;ShowColumnFooterEachPage&amp;gt;True&amp;lt;/ShowColumnFooterEachPage&amp;gt;&amp;lt;ShowTitle&amp;gt;True&amp;lt;/ShowTitle&amp;gt;&amp;lt;ShowSubtitle&amp;gt;True&amp;lt;/ShowSubtitle&amp;gt;&amp;lt;UseMax&amp;gt;True&amp;lt;/UseMax&amp;gt;&amp;lt;UseSmartPrint&amp;gt;False&amp;lt;/UseSmartPrint&amp;gt;&amp;lt;Opacity&amp;gt;255&amp;lt;/Opacity&amp;gt;&amp;lt;PrintNotes&amp;gt;None&amp;lt;/PrintNotes&amp;gt;&amp;lt;Centering&amp;gt;None&amp;lt;/Centering&amp;gt;&amp;lt;RepeatColStart&amp;gt;-1&amp;lt;/RepeatColStart&amp;gt;&amp;lt;RepeatColEnd&amp;gt;-1&amp;lt;/RepeatColEnd&amp;gt;&amp;lt;RepeatRowStart&amp;gt;-1&amp;lt;/RepeatRowStart&amp;gt;&amp;lt;RepeatRowEnd&amp;gt;-1&amp;lt;/RepeatRowEnd&amp;gt;&amp;lt;SmartPrintPagesTall&amp;gt;1&amp;lt;/SmartPrintPagesTall&amp;gt;&amp;lt;SmartPrintPagesWide&amp;gt;1&amp;lt;/SmartPrintPagesWide&amp;gt;&amp;lt;HeaderHeight&amp;gt;-1&amp;lt;/HeaderHeight&amp;gt;&amp;lt;FooterHeight&amp;gt;-1&amp;lt;/FooterHeight&amp;gt;&amp;lt;/PrintInfo&amp;gt;&amp;lt;TitleInfo class=&amp;quot;FarPoint.Web.Spread.TitleInfo&amp;quot;&amp;gt;&amp;lt;Style class=&amp;quot;FarPoint.Web.Spread.StyleInfo&amp;quot;&amp;gt;&amp;lt;BackColor&amp;gt;#e7eff7&amp;lt;/BackColor&amp;gt;&amp;lt;HorizontalAlign&amp;gt;Right&amp;lt;/HorizontalAlign&amp;gt;&amp;lt;/Style&amp;gt;&amp;lt;/TitleInfo&amp;gt;&amp;lt;LayoutTemplate class=&amp;quot;FarPoint.Web.Spread.LayoutTemplate&amp;quot;&amp;gt;&amp;lt;Layout&amp;gt;&amp;lt;ColumnCount&amp;gt;4&amp;lt;/ColumnCount&amp;gt;&amp;lt;RowCount&amp;gt;1&amp;lt;/RowCount&amp;gt;&amp;lt;/Layout&amp;gt;&amp;lt;Data&amp;gt;&amp;lt;LayoutData class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetDataModel&amp;quot; rows=&amp;quot;1&amp;quot; columns=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;AutoCalculation&amp;gt;True&amp;lt;/AutoCalculation&amp;gt;&amp;lt;AutoGenerateColumns&amp;gt;True&amp;lt;/AutoGenerateColumns&amp;gt;&amp;lt;ReferenceStyle&amp;gt;A1&amp;lt;/ReferenceStyle&amp;gt;&amp;lt;Iteration&amp;gt;False&amp;lt;/Iteration&amp;gt;&amp;lt;MaximumIterations&amp;gt;1&amp;lt;/MaximumIterations&amp;gt;&amp;lt;MaximumChange&amp;gt;0.001&amp;lt;/MaximumChange&amp;gt;&amp;lt;Cells&amp;gt;&amp;lt;Cell row=&amp;quot;0&amp;quot; column=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;Data type=&amp;quot;System.Int32&amp;quot;&amp;gt;0&amp;lt;/Data&amp;gt;&amp;lt;/Cell&amp;gt;&amp;lt;Cell row=&amp;quot;0&amp;quot; column=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Data type=&amp;quot;System.Int32&amp;quot;&amp;gt;1&amp;lt;/Data&amp;gt;&amp;lt;/Cell&amp;gt;&amp;lt;Cell row=&amp;quot;0&amp;quot; column=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;Data type=&amp;quot;System.Int32&amp;quot;&amp;gt;2&amp;lt;/Data&amp;gt;&amp;lt;/Cell&amp;gt;&amp;lt;Cell row=&amp;quot;0&amp;quot; column=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;Data type=&amp;quot;System.Int32&amp;quot;&amp;gt;3&amp;lt;/Data&amp;gt;&amp;lt;/Cell&amp;gt;&amp;lt;/Cells&amp;gt;&amp;lt;/LayoutData&amp;gt;&amp;lt;/Data&amp;gt;&amp;lt;AxisModels&amp;gt;&amp;lt;LayoutColumn class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetAxisModel&amp;quot; orientation=&amp;quot;Horizontal&amp;quot; count=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;Items&amp;gt;&amp;lt;Item index=&amp;quot;-1&amp;quot;&amp;gt;&amp;lt;SortIndicator&amp;gt;Ascending&amp;lt;/SortIndicator&amp;gt;&amp;lt;/Item&amp;gt;&amp;lt;/Items&amp;gt;&amp;lt;/LayoutColumn&amp;gt;&amp;lt;LayoutRow class=&amp;quot;FarPoint.Web.Spread.Model.DefaultSheetAxisModel&amp;quot; orientation=&amp;quot;Vertical&amp;quot; count=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;Items&amp;gt;&amp;lt;Item index=&amp;quot;-1&amp;quot; /&amp;gt;&amp;lt;/Items&amp;gt;&amp;lt;/LayoutRow&amp;gt;&amp;lt;/AxisModels&amp;gt;&amp;lt;/LayoutTemplate&amp;gt;&amp;lt;LayoutMode&amp;gt;CellLayoutMode&amp;lt;/LayoutMode&amp;gt;&amp;lt;CurrentPageIndex type=&amp;quot;System.Int32&amp;quot;&amp;gt;0&amp;lt;/CurrentPageIndex&amp;gt;&amp;lt;/Settings&amp;gt;&amp;lt;/Sheet&amp;gt;">
  19.                 </FarPoint:SheetView>
  20.             </Sheets>
  21.             <TitleInfo BackColor="#E7EFF7" Font-Size="X-Large" HorizontalAlign="Center"
  22.                 font-bold="False" font-italic="False" font-overline="False"
  23.                 font-strikeout="False" font-underline="False">
  24.             </TitleInfo>
  25.             <HierBar Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
  26.                 Font-Underline="False" />
  27.             <Pager Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
  28.                 Font-Underline="False" />
  29.             <CommandBar BackColor="Transparent">
  30. <Background BackgroundImageUrl="SPREADCLIENTPATH:/img/cbbg.gif"></Background>
  31.             </CommandBar>
  32.         </FarPoint:FpSpread>
  33.         <asp:Button ID="Button1" runat="server" OnClick="Button1_Click"
  34.             Text="Button1" />
  35.         <asp:Button ID="Button2" runat="server" onclick="Button2_Click"
  36.             Text="Button2" />
  37.         <asp:Button ID="Button3" runat="server" onclick="Button3_Click"
  38.             Text="Button3" />
  39.     </div>
  40.     </form>
  41. </body>
  42. </html>
复制代码

13 个回复

倒序浏览
easypower
注册会员   /  发表于:2012-4-17 18:30:00
沙发

回复 1# easypower 的帖子

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using System.IO;

  8. namespace Spread.Test
  9. {
  10.     public partial class Default : System.Web.UI.Page
  11.     {
  12.         protected void Page_Load(object sender, EventArgs e)
  13.         {

  14.         }

  15.         protected void Button1_Click(object sender, EventArgs e)
  16.         {
  17.             FpSpread1.Sheets[0].DesignString =
  18. @"<?xml version=""1.0"" encoding=""utf-8""?>
  19. <Sheet>
  20. <Data>
  21.     <RowHeader class=""FarPoint.Web.Spread.Model.DefaultSheetDataModel"" rows=""3"" columns=""1"">
  22.         <AutoCalculation>True</AutoCalculation>
  23.         <AutoGenerateColumns>True</AutoGenerateColumns>
  24.         <ReferenceStyle>A1</ReferenceStyle>
  25.         <Iteration>False</Iteration>
  26.         <MaximumIterations>1</MaximumIterations>
  27.         <MaximumChange>0.001</MaximumChange>
  28.     </RowHeader>
  29.     <ColumnHeader class=""FarPoint.Web.Spread.Model.DefaultSheetDataModel"" rows=""1"" columns=""4"">
  30.         <AutoCalculation>True</AutoCalculation>
  31.         <AutoGenerateColumns>True</AutoGenerateColumns>
  32.         <ReferenceStyle>A1</ReferenceStyle>
  33.         <Iteration>False</Iteration>
  34.         <MaximumIterations>1</MaximumIterations>
  35.         <MaximumChange>0.001</MaximumChange>
  36.     </ColumnHeader>
  37.     <DataArea class=""FarPoint.Web.Spread.Model.DefaultSheetDataModel"" rows=""3"" columns=""4"">
  38.         <AutoCalculation>True</AutoCalculation>
  39.         <AutoGenerateColumns>True</AutoGenerateColumns>
  40.         <ReferenceStyle>A1</ReferenceStyle>
  41.         <Iteration>False</Iteration>
  42.         <MaximumIterations>1</MaximumIterations>
  43.         <MaximumChange>0.001</MaximumChange>
  44.         <SheetName>SheetABC</SheetName>
  45.         <Cells>
  46.             <Cell row=""0"" column=""0"">
  47.                 <Data type=""System.Int32"">123</Data>
  48.             </Cell>
  49.             <Cell row=""1"" column=""1"">
  50.                 <Data type=""System.Int32"">234</Data>
  51.             </Cell>
  52.             <Cell row=""2"" column=""2"">
  53.                 <Data type=""System.Int32"">345</Data>
  54.             </Cell>
  55.         </Cells>
  56.     </DataArea>
  57.     <SheetCorner class=""FarPoint.Web.Spread.Model.DefaultSheetDataModel"" rows=""1"" columns=""1"">
  58.         <AutoCalculation>True</AutoCalculation>
  59.         <AutoGenerateColumns>True</AutoGenerateColumns>
  60.         <ReferenceStyle>A1</ReferenceStyle>
  61.         <Iteration>False</Iteration>
  62.         <MaximumIterations>1</MaximumIterations>
  63.         <MaximumChange>0.001</MaximumChange>
  64.     </SheetCorner>
  65.     <ColumnFooter class=""FarPoint.Web.Spread.Model.DefaultSheetDataModel"" rows=""1"" columns=""4"">
  66.         <AutoCalculation>True</AutoCalculation>
  67.         <AutoGenerateColumns>True</AutoGenerateColumns>
  68.         <ReferenceStyle>A1</ReferenceStyle>
  69.         <Iteration>False</Iteration>
  70.         <MaximumIterations>1</MaximumIterations>
  71.         <MaximumChange>0.001</MaximumChange>
  72.     </ColumnFooter>
  73. </Data>
  74. <Presentation>
  75. <HeaderGrayAreaColor>#7999c2</HeaderGrayAreaColor>
  76. <AxisModels>
  77. <Column class=""FarPoint.Web.Spread.Model.DefaultSheetAxisModel"" orientation=""Horizontal"" count=""4"">
  78.     <Items>
  79.         <Item index=""-1"">
  80.             <SortIndicator>Ascending</SortIndicator>
  81.         </Item>
  82.     </Items>
  83. </Column>
  84. <RowHeaderColumn class=""FarPoint.Web.Spread.Model.DefaultSheetAxisModel"" defaultSize=""40"" orientation=""Horizontal"" count=""1"">
  85.     <Items>
  86.         <Item index=""-1"">
  87.         <Size>40</Size>
  88.         <SortIndicator>Ascending</SortIndicator>
  89.         </Item>
  90.     </Items>
  91. </RowHeaderColumn>
  92. <ColumnHeaderRow class=""FarPoint.Web.Spread.Model.DefaultSheetAxisModel"" defaultSize=""22"" orientation=""Vertical"" count=""1"">
  93.     <Items>
  94.         <Item index=""-1"">
  95.             <Size>22</Size>
  96.         </Item>
  97.     </Items>
  98. </ColumnHeaderRow>
  99. <ColumnFooterRow class=""FarPoint.Web.Spread.Model.DefaultSheetAxisModel"" defaultSize=""22"" orientation=""Vertical"" count=""1"">
  100. <Items>
  101. <Item index=""-1"">
  102. <Size>22</Size>
  103. </Item>
  104. </Items>
  105. </ColumnFooterRow>
  106. </AxisModels>
  107. <StyleModels>
  108. <RowHeader class=""FarPoint.Web.Spread.Model.DefaultSheetStyleModel"" Rows=""3"" Columns=""1"">
  109. <AltRowCount>2</AltRowCount>
  110. <DefaultStyle class=""FarPoint.Web.Spread.NamedStyle"" Parent=""RowHeaderDefault"" />
  111. <ConditionalFormatCollections />
  112. </RowHeader>
  113. <ColumnHeader class=""FarPoint.Web.Spread.Model.DefaultSheetStyleModel"" Rows=""1"" Columns=""4"">
  114. <AltRowCount>2</AltRowCount>
  115. <DefaultStyle class=""FarPoint.Web.Spread.NamedStyle"" Parent=""ColumnHeaderDefault"">
  116. <Background class=""FarPoint.Web.Spread.Background"">
  117. <BackgroundImageUrl>{SPREADCLIENTPATH}/img/chbg.gif</BackgroundImageUrl>
  118. <SelectedBackgroundImageUrl>{SPREADCLIENTPATH}/img/chm.png</SelectedBackgroundImageUrl>
  119. </Background>
  120. </DefaultStyle>
  121. <ConditionalFormatCollections />
  122. </ColumnHeader>
  123. <DataArea class=""FarPoint.Web.Spread.Model.DefaultSheetStyleModel"" Rows=""3"" Columns=""4"">
  124. <AltRowCount>2</AltRowCount>
  125. <DefaultStyle class=""FarPoint.Web.Spread.NamedStyle"" Parent=""DataAreaDefault"" />
  126. <ConditionalFormatCollections />
  127. </DataArea>
  128. <SheetCorner class=""FarPoint.Web.Spread.Model.DefaultSheetStyleModel"" Rows=""1"" Columns=""1"">
  129. <AltRowCount>2</AltRowCount>
  130. <DefaultStyle class=""FarPoint.Web.Spread.NamedStyle"" Parent=""CornerDefault"">
  131. <Background class=""FarPoint.Web.Spread.Background"">
  132. <BackgroundImageUrl>{SPREADCLIENTPATH}/img/chbg.gif</BackgroundImageUrl>
  133. <SelectedBackgroundImageUrl>{SPREADCLIENTPATH}/img/chm.png</SelectedBackgroundImageUrl>
  134. </Background>
  135. </DefaultStyle>
  136. <ConditionalFormatCollections />
  137. </SheetCorner>
  138. <ColumnFooter class=""FarPoint.Web.Spread.Model.DefaultSheetStyleModel"" Rows=""1"" Columns=""4"">
  139. <AltRowCount>2</AltRowCount><DefaultStyle class=""FarPoint.Web.Spread.NamedStyle"" Parent=""ColumnFooterDefault"" />
  140. <ConditionalFormatCollections /></ColumnFooter></StyleModels><MessageRowStyle class=""FarPoint.Web.Spread.Appearance"">
  141. <BackColor>LightYellow</BackColor><ForeColor>Red</ForeColor></MessageRowStyle><SheetCornerStyle class=""FarPoint.Web.Spread.NamedStyle"" Parent=""CornerDefault"">
  142. <Background class=""FarPoint.Web.Spread.Background""><BackgroundImageUrl>{SPREADCLIENTPATH}/img/chbg.gif</BackgroundImageUrl>
  143. <SelectedBackgroundImageUrl>{SPREADCLIENTPATH}/img/chm.png</SelectedBackgroundImageUrl></Background></SheetCornerStyle>
  144. <AllowLoadOnDemand>false</AllowLoadOnDemand><LoadRowIncrement >10</LoadRowIncrement ><LoadInitRowCount >30</LoadInitRowCount >
  145. <TopRow>0</TopRow><PreviewRowStyle class=""FarPoint.Web.Spread.PreviewRowInfo""><TabStop>False</TabStop></PreviewRowStyle>
  146. </Presentation><Settings><Name>Sheet1</Name><Categories><Appearance><GridLineColor>#d0d7e5</GridLineColor><SelectionBorder class=""FarPoint.Web.Spread.Border"" />
  147. <HeaderGrayAreaColor>#7999c2</HeaderGrayAreaColor><SelectionBackColor>#eaecf5</SelectionBackColor></Appearance><Behavior /><Layout>
  148. <RowHeaderColumnCount>1</RowHeaderColumnCount><ColumnHeaderRowCount>1</ColumnHeaderRowCount></Layout></Categories>
  149. <ColumnHeaderRowCount>1</ColumnHeaderRowCount><ColumnFooterRowCount>1</ColumnFooterRowCount><TitleInfo class=""FarPoint.Web.Spread.TitleInfo"">
  150. <Style class=""FarPoint.Web.Spread.StyleInfo""><BackColor>#e7eff7</BackColor><HorizontalAlign>Right</HorizontalAlign></Style>
  151. </TitleInfo><LayoutTemplate class=""FarPoint.Web.Spread.LayoutTemplate""><Layout><ColumnCount>4</ColumnCount><RowCount>1</RowCount>
  152. </Layout><Data><LayoutData class=""FarPoint.Web.Spread.Model.DefaultSheetDataModel"" rows=""1"" columns=""4"">
  153. <AutoCalculation>True</AutoCalculation><AutoGenerateColumns>True</AutoGenerateColumns><ReferenceStyle>A1</ReferenceStyle>
  154. <Iteration>False</Iteration><MaximumIterations>1</MaximumIterations><MaximumChange>0.001</MaximumChange></LayoutData>
  155. </Data><AxisModels><LayoutColumn class=""FarPoint.Web.Spread.Model.DefaultSheetAxisModel"" orientation=""Horizontal"" count=""4"">
  156. <Items><Item index=""-1""><SortIndicator>Ascending</SortIndicator></Item></Items></LayoutColumn>
  157. <LayoutRow class=""FarPoint.Web.Spread.Model.DefaultSheetAxisModel"" orientation=""Vertical"" count=""1"">
  158. <Items><Item index=""-1"" /></Items></LayoutRow></AxisModels></LayoutTemplate><LayoutMode>CellLayoutMode</LayoutMode>
  159. </Settings>
  160. </Sheet>";
  161.         }

  162.         protected void Button2_Click(object sender, EventArgs e)
  163.         {
  164.             MemoryStream stream = new MemoryStream();
  165.             FpSpread1.Sheets[0].Save(stream, true);
  166.             string str = System.Text.Encoding.UTF8.GetString(stream.ToArray());
  167.         }

  168.         protected void Button3_Click(object sender, EventArgs e)
  169.         {
  170.             ?FpSpread1.Sheets[0].DesignString = "<?xml version="1.0" encoding="utf-8"?>\r\n<Sheet class="FarPoint.Web.Spread.SheetView">\r\n  <!--Data Section - This section contains the sheet data.-->\r\n  <Data>\r\n    <DataArea class="FarPoint.Web.Spread.Model.DefaultSheetDataModel" rows="3" columns="4">\r\n      <AutoCalculation>True</AutoCalculation>\r\n      <AutoGenerateColumns>True</AutoGenerateColumns>\r\n      <ReferenceStyle>A1</ReferenceStyle>\r\n      <Iteration>False</Iteration>\r\n      <MaximumIterations>1</MaximumIterations>\r\n      <MaximumChange>0.001</MaximumChange>\r\n      <SheetName>Sheet1</SheetName>\r\n      <Cells>\r\n        <Cell row="0" column="0">\r\n          <Data type="System.Int32">123</Data>\r\n        </Cell>\r\n        <Cell row="0" column="1">\r\n          <Data type="System.String">bbb</Data>\r\n        </Cell>\r\n        <Cell row="0" column="2">\r\n          <Data type="System.String">ccc</Data>\r\n        </Cell>\r\n        <Cell row="1" column="1">\r\n          <Data type="System.Int32">234</Data>\r\n        </Cell>\r\n        <Cell row="1" column="2">\r\n          <Data type="System.String">qqq</Data>\r\n        </Cell>\r\n        <Cell row="2" column="1">\r\n          <Data type="System.String">ddd</Data>\r\n        </Cell>\r\n        <Cell row="2" column="2">\r\n          <Data type="System.Int32">345</Data>\r\n        </Cell>\r\n      </Cells>\r\n    </DataArea>\r\n    <RowHeader class="FarPoint.Web.Spread.Model.DefaultSheetDataModel" rows="3" columns="1">\r\n      <AutoCalculation>True</AutoCalculation>\r\n      <AutoGenerateColumns>True</AutoGenerateColumns>\r\n      <ReferenceStyle>A1</ReferenceStyle>\r\n      <Iteration>False</Iteration>\r\n      <MaximumIterations>1</MaximumIterations>\r\n      <MaximumChange>0.001</MaximumChange>\r\n    </RowHeader>\r\n    <ColumnHeader class="FarPoint.Web.Spread.Model.DefaultSheetDataModel" rows="1" columns="4">\r\n      <AutoCalculation>True</AutoCalculation>\r\n      <AutoGenerateColumns>True</AutoGenerateColumns>\r\n      <ReferenceStyle>A1</ReferenceStyle>\r\n      <Iteration>False</Iteration>\r\n      <MaximumIterations>1</MaximumIterations>\r\n      <MaximumChange>0.001</MaximumChange>\r\n    </ColumnHeader>\r\n    <SheetCorner class="FarPoint.Web.Spread.Model.DefaultSheetDataModel" rows="1" columns="1">\r\n      <AutoCalculation>True</AutoCalculation>\r\n      <AutoGenerateColumns>True</AutoGenerateColumns>\r\n      <ReferenceStyle>A1</ReferenceStyle>\r\n      <Iteration>False</Iteration>\r\n      <MaximumIterations>1</MaximumIterations>\r\n      <MaximumChange>0.001</MaximumChange>\r\n    </SheetCorner>\r\n    <ColumnFooter class="FarPoint.Web.Spread.Model.DefaultSheetDataModel" rows="1" columns="4">\r\n      <AutoCalculation>True</AutoCalculation>\r\n      <AutoGenerateColumns>True</AutoGenerateColumns>\r\n      <ReferenceStyle>A1</ReferenceStyle>\r\n      <Iteration>False</Iteration>\r\n      <MaximumIterations>1</MaximumIterations>\r\n      <MaximumChange>0.001</MaximumChange>\r\n    </ColumnFooter>\r\n  </Data>\r\n</Sheet>";
  171.         }

  172.     }
  173. }
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-17 18:41:00
板凳

回复 2# easypower 的帖子

easypower 你好,
能否上传 Demo 到论坛调试?
问题我们已经接收,明天回复。
回复 使用道具 举报
easypower
注册会员   /  发表于:2012-4-18 09:31:00
地板
页面前台后台代码都已上传啊
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-18 09:39:00
5#

回复 4# easypower 的帖子

easypower 你好
该问题正在处理中,我会尽快回复~
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-18 18:20:00
6#
easypower 你好,
通过IDE的设计器设计后的模板如何直接变成文本格式,从aspx中复制需要处理转义字符,不太方便

在设计器中设置好格式之后,我们可以使用设计器直接保存格式,请参考截图:
savebydesigner.png (47.68 KB, 下载次数: 563)
回复 使用道具 举报
easypower
注册会员   /  发表于:2012-4-21 11:49:00
7#
感谢回复,第2个问题和第3个问题也请回复一下
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-23 11:06:00
8#

回复 7# easypower 的帖子

easypower 你好,
关于问题 2 问题 3 在 6# Demo 中已经测试,请参考。
Demo 中分别使用两个 Button 加载通过 Spread 设计器生成的 XML 和 通过后台代码保存的 XML 。并没有出现 1# 中提到的问题。
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-4-25 23:15:00
9#
版主,随便问一下:我的模板是从EXECL中导过来,在用户填写EXECL的模板后,能不能实现EXECL模板和用户填写的数据分开保存?当用户需要查看他所填写的内容时候,我们能否实现把数据和EXECL模板合并在一块展示给用户?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-26 10:54:00
10#
elwin 你好,
可以实现该功能,下面是测试 Demo(内附功能注释):
测试环境:VS2010 &amp;&amp; Spread for .NET 6.0
SeperateStyleAndData.zip (21.66 KB, 下载次数: 510)
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部