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

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

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

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

SpreadSheetGear电子表单,官网下载地址:https://www.spreadsheetgear.com/support/samples/asp.net.aspx。

官网的SpreadSheetGear样式不怎么好看。所以推荐使用Telerik第三方控件~

1、安装Telerik控件

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

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

3、添加菜单按钮

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

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 = ;
foreach (var range in ranges)
{
if (range.IsSingleCell)
{
continue;
}
var firstRange=range.FromIndex;
//Foreach Rows
for (int i = ; i < range.RowCount; i++)
{
int rowIndex = firstRange.RowIndex+i+ insertRowsCount;
int columnIndex = firstRange.ColumnIndex; int currentRowAddRows = ;
//赋值
for (int j = ; j < range.ColumnCount; j++)
{
var cellValue =sheet.Cells[rowIndex, columnIndex + j].GetValue().Value;
if (string.IsNullOrEmpty(cellValue.RawValue))
{
continue;
}
sheet.Rows.Insert(rowIndex + +currentRowAddRows, ); currentRowAddRows++; sheet.Cells[rowIndex + j, columnIndex].SetValue(cellValue.RawValue);
sheet.Cells[rowIndex, columnIndex + j].SetValue("");
}
//本行单元格复制上行内容 int index = ;
do
{
var upValue = sheet.Cells[rowIndex, index].GetValue().Value;
if (string.IsNullOrEmpty(upValue.RawValue) && index > )
{
break;
} if (index != columnIndex)
{
for (int j = ; j < currentRowAddRows; j++)
{
sheet.Cells[rowIndex + + j, index].SetValue(upValue);
}
}
index++;
} while (true); insertRowsCount += currentRowAddRows;
} }
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

这个Telerik控件还是比较方便的。

WPF SpreadSheetGear电子表单的更多相关文章

  1. OA电子表单设计-年假申请单-数据验证

    OA从年初上线到现在已经过去半年了,时光飞逝. 上月底,行政文员找到我,说最近有新来的部门文员填<年假申请单>时,有乱填的情况,让我想办法处理. 我一查还真是,这文员是个男的,同一天给同一 ...

  2. WPF常规表单验证

    1:ViewModel 实现验证接口 IDataErrorInfo 2:实现接口的相关验证逻辑,并把错误信息反馈给 Error public string this[string columnName ...

  3. Bootstrap WPF Style,Bootstrap风格的WPF样式

    简介 GitHub地址:https://github.com/ptddqr/bootstrap-wpf-style 此样式基于bootstrap-3.3.0,样式文件里的源码行数都是指的这个版本.CS ...

  4. 快速创建InfoPath表单

    快速创建InfoPath表单 2010年已经过去了一半了,这时候再说初识InfoPath可能会被很多人笑话,但是又有多少人真正认识InfoPath呢?无论你是刚刚 听说这个东西还是它的老相好都请同我一 ...

  5. python 各种开源库

    测试开发 来源:https://www.jianshu.com/p/ea6f7fb69501 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. 链接 sel ...

  6. Python 资源大全中文版

    Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...

  7. Sharepoint + Office Infopart + Quick Apps for Sharepoint搭建无纸化工作平台

    项目背景: 某大型外企各分部通过互联网专线统一域环境,Exchange邮件系统,Sharepoint平台及依赖环境已经购买并搭建起来,Dell Quick app for Sharepoint已购卖并 ...

  8. iStylePDF安全电子文档解决方案之电子合同在线订立

    交易是商业世界不可或缺的一部分,而签名是交易的凭证.可是,尽管互联网和IT技术已经很发达,但每逢遇到签名,还是得用最原始的方法——握笔写字.与如今走到哪都能听到“互联网+”相比有点不合潮流,通过电子签 ...

  9. UCanCode发布升级E-Form++可视化源码组件库2015全新版 (V23.01)!

    2015年4月. 成都 UCanCode发布升级E-Form++可视化源码组件库2015全新版 (V23.01)! --- 全面性能提升,UCanCode有史以来最强大的版本发布! E-Form++可 ...

随机推荐

  1. MySql 管理操作常用命令

    登陆mysql mysql -u username -p 创建用户名配置权限,这里为该用户配置tablename表的全部权限,也可以指定 GRANT ALL PRIVILEGES ON databas ...

  2. CSS实现图片缩放特效

    今天是感恩节,祝大家感恩节快乐哦!最近天冷了,大家注意保暖哟.下面一起看看小颖写的demo吧. html代码: <!DOCTYPE html> <html> <head& ...

  3. 《JavaScript 源码分析》之 jquery.unobtrusive-ajax.js

    /*! ** Unobtrusive Ajax support library for jQuery ** Copyright (C) Microsoft Corporation. All right ...

  4. mysql交互式连接&非交互式连接

    交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议. 非交互式操作:就是你在你的项目中进行程序调用.比如一边是tom ...

  5. SpringBoot中yaml配置对象

    转载请在页首注明作者与出处 一:前言 YAML可以代替传统的xx.properties文件,但是它支持声明map,数组,list,字符串,boolean值,数值,NULL,日期,基本满足开发过程中的所 ...

  6. ASP.NET Core 中文文档 第三章 原理(4)路由

    原文:Routing 作者:Ryan Nowak.Steve Smith. Rick Anderson 翻译:张仁建(Stoneqiu) 校对:许登洋(Seay).谢炀(kiler398).孟帅洋(书 ...

  7. Jsp的九大对象,七大动作,三大指令

    jsp九大内置对象:1>out 向客户端输出数据,字节流.如out.print(" dgaweyr"); 2>request 接收客户端的http请求.String g ...

  8. Entity Framework Extended Library

    扩展了实体框架的功能类库. https://github.com/loresoft/EntityFramework.Extended 1批量更新/删除 1)删除 //delete all users ...

  9. 【手记】为windows2008建个睡眠快捷方式

    ----------------201607041343更新---------------- 在另一台电脑上SetSystemPowerState又不好使了,执行了根本没反应.又回头来试SetSusp ...

  10. Hibernate-模板模式

    在我的博客<Hibernate总结(一)>在对数据库的增删改查前后重复的使用了得到Session与关闭Session等操作,因此我想到了模板设计模式. 模板设计模式概述: 定义一个操作中的 ...