你的位置:首页 > 软件开发 > ASP.net > WPF SpreadSheetGear电子表单

WPF SpreadSheetGear电子表单

发布时间:2016-11-22 20:00:09
我们经常会碰到生成Excel 界面并在其上操作的功能开发。比如如下界面,我们需要在菜单里添加一个菜单按钮“Columns To Rows Transform" 功能是对多列批量转成多行.我们可以通过Interop组件,在其中添加菜单附加功能,这个在之后的随笔中我会写 ...

 我们经常会碰到生成Excel 界面并在其上操作的功能开发。

比如如下界面,我们需要在菜单里添加一个菜单按钮“Columns To Rows Transform" 功能是对多列批量转成多行.

WPF SpreadSheetGear电子表单

我们可以通过Interop组件,在其中添加菜单附加功能,这个在之后的随笔中我会写个Demo,供大家查看。但是这个有点麻烦,每次启动Excel都需要手动重新注册Excel环境。

 而我们可以通过第三方控件,提供解决方案:

1、安装Telerik控件

   如果方便的话,建议下个Demo。

WPF SpreadSheetGear电子表单

 

2、通过VS中的Telerik新建一个Telerik项目。新建会有模板选项,还是比较方便的

WPF SpreadSheetGear电子表单

3、添加菜单按钮

WPF SpreadSheetGear电子表单

4、在后台添加事件处理即可。

WPF SpreadSheetGear电子表单WPF SpreadSheetGear电子表单
private void ColumnsAndRowsTransformButton_OnClick(object sender, RoutedEventArgs e)    {      try      {        var workbook = viewModel.Workbook;        var sheet = workbook.ActiveWorksheet;        var ranges = sheet.ViewState.SelectionState.SelectedRanges;        int insertRowsCount = 0;        foreach (var range in ranges)        {          if (range.IsSingleCell)          {            continue;          }          var firstRange=range.FromIndex;          //Foreach Rows          for (int i = 0; i < range.RowCount; i++)          {            int rowIndex = firstRange.RowIndex+i+ insertRowsCount;            int columnIndex = firstRange.ColumnIndex;            int currentRowAddRows = 0;            //赋值            for (int j = 1; j < range.ColumnCount; j++)            {              var cellValue =sheet.Cells[rowIndex, columnIndex + j].GetValue().Value;              if (get='_blank'>string.IsNullOrEmpty(cellValue.RawValue))              {                continue;              }              sheet.Rows.Insert(rowIndex + 1+currentRowAddRows, 1);                            currentRowAddRows++;              sheet.Cells[rowIndex + j, columnIndex].SetValue(cellValue.RawValue);              sheet.Cells[rowIndex, columnIndex + j].SetValue("");            }            //本行单元格复制上行内容            int index = 0;            do            {              var upValue = sheet.Cells[rowIndex, index].GetValue().Value;              if (string.IsNullOrEmpty(upValue.RawValue) && index > 50)              {                break;              }              if (index != columnIndex)              {                for (int j = 0; j < currentRowAddRows; j++)                {                  sheet.Cells[rowIndex +1 + j, index].SetValue(upValue);                }              }              index++;            } while (true);            insertRowsCount += currentRowAddRows;          }                    }      }      catch (Exception ex)      {        MessageBox.Show(ex.Message);      }    }

原标题:WPF SpreadSheetGear电子表单

关键词:wpf

wpf
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。