Chinaiss 发表于 2017-2-8 09:52:56

保存为Xlsx后ActiveSheet.Tag的属性值丢失

为什么保存为xml格式时,有包含ActiveSheet.Tag的属性,保存为xlsx格式后,ActiveSheet.Tag的属性值丢失
代码如下:

public MainWindow()
      {
            InitializeComponent();
            this.Loaded += MainWindow_Loaded;
      }

      void MainWindow_Loaded(object sender, RoutedEventArgs e)
      {
            GcSpreadSheet spread2 = new GcSpreadSheet();
            using (MemoryStream stream = new MemoryStream(GetXlsxFormatFileContent()))
            {
                spread2.OpenExcel(stream);
                //spread2.OpenXml(stream);
            }
            object tag = spread2.ActiveSheet.Tag;
            MessageBox.Show(tag == null ? "不存在Tag值" : tag.ToString());
      }

      private byte[] GetXlsxFormatFileContent()
      {
            GcSpreadSheet spread1 = new GcSpreadSheet();
            spread1.ActiveSheet.Tag = "这是Tag属性";
            spread1.ActiveSheet.Cells.Text = "这是A1";

            using (MemoryStream stream = new MemoryStream())
            {
                spread1.SaveExcel(stream, ExcelFileFormat.XLSX, ExcelSaveFlags.SaveAsViewed);
                //spread1.SaveXml(stream);
                return stream.ToArray();
            }
      }

Chinaiss 发表于 2017-2-8 10:15:58

同时单元格的Tag也丢失

dexteryao 发表于 2017-2-8 10:49:33

您好,Excel 是没有tag这个概念的,所以导出后也没有地方可保存。
tag是给开发人员使用保存临时信息的。

Chinaiss 发表于 2017-2-8 11:20:36

因为当前同时使用GcSpreadSheet和SpreadJS控件,现在GcSpreadSheet保存文件后在SpreadJS展示文件及录入。因为SPreadJS不支持带入XML文件,除了两个控件都保存为Xlsx方案(无tag属性,tooltip原本都保存在tag属性,tooltipd丢失)外还有其他方案可使用吗

dexteryao 发表于 2017-2-8 14:18:34

一般方案都是模板和数据分开保存,模板可以保存为Excel,数据在数据库里存放,展示的时候再设置到页面上。
您可情况可以专门将所有tag单独保存一个文件,spreadjs加载时候也去读取这个设置。
页: [1]
查看完整版本: 保存为Xlsx后ActiveSheet.Tag的属性值丢失