将含有自定义代码的Infopath模板发布到Sharepoint表单库中

    最近一好友通过msn曰:“ocean最近没有写点什么?”。想想也确实应该写点什么了。从实际的项目经验来说,也确实有很多东西可以写,至少也能写个小册子,但是始终没有静下心来写。上次去北京,被KB和婷MM痛殴之后,也深刻反省,是该写点什么的时候了。记得在卫生间中碰到bin哥,bin哥面带微笑的说“怎么ocean在这里”,但是从眼神中已经发现了愤怒的元素,飞快的闪人,免得再次被痛殴,想想也是该写点什么了。毕竟IW是给企业带来价值的,IW的阵营也是需要有点新东西了。

    写点什么呢?正好想着9月底去北京时KB碰到的问题,当时很狂妄的教了KB一把,就写写这个吧。如何将一个含有自定义代码的infopath表单模板发布到Sharepoint表单库中。

    我们发布一个Infopath表单模板到Sharepoint表单库是非常简单的事情,但是当我们Infopath中包含自定义的代码的时候,就会发现发布到Sharepoint表单库后,表单中的自定义代码无法运行,通常会报一个没有权限的错误,如下:

2.jpg

    那么我们应该怎么做呢?实际的步骤挺麻烦,但是sdk中有详细的介绍,不过很多人不乐意看sdk,我就介绍一下大体的步骤吧。假设我们新建了一个模板,放在c:\infopath\testsave.xsn。模板中就一个文本框和一个按钮。类似如下:

1.jpg

    然后为Save按钮定义了如下自定义代码:

function CTRL1_5::OnClick(eventObj)
{
     // 在此处编写代码
     if (XDocument.IsDirty)
     {
         XDocument.Save();
     }
}

    要将这个表单模板发布到Sharepoint需要3个步骤。

    1:使用regform.exe将表单设置为完全信任。这一步实际上是最麻烦的一步。regform.exe在哪儿呢?需要安装infopath的sdk才会有,infopath的sdk可以从此处下载。安装完毕后,默认的路径就在"C:\Program Files\Microsoft Office 2003 Developer Resources\Microsoft Office InfoPath 2003 SDK\Tools\RegForm.exe"。

        a:得到urn,要信任infopath模板,首先要得到infopath的urn,这个简单,从文件->提取表单,就可以提取到表单的所有文件,或者将xsn改成cab,用rar解压缩也可以。得到的文件中有一个manifest.xsf,用记事本打开后从里面我们可以看到<xsf:xDocumentClass>该元素中的name属性便是这里我们用的urn名字,我这里得到的是“urn:schemas-microsoft-com:office:infopath:infopath:-myXSD-2005-11-05T12-31-24”。

        b:运行regform.exe注册表单,命令行为:"C:\Program Files\Microsoft Office 2003 Developer Resources\Microsoft Office InfoPath 2003 SDK\Tools\RegForm.exe" /U urn:schemas-microsoft-com:office:infopath:infopath:-myXSD-2005-11-05T12-31-24 /T Yes testsave.xsn。参数我就不解释了,大家可以照猫画虎。运行完毕后,会生成一个testsave.js的文件。这个命令运行的效果如下:

3.jpg

       c:运行testsave.js文件,直到显示注册成功。如下:

4.jpg

5.jpg

6.jpg

     2:这个时候,表单在本地就可以运行自定义代码了,但是当你发布到Sharepoint的时候,仍然会不可用,为了能够在Sharepoint中使用,我们需要对表单模板进行签名。从工具->表单选项->安全中进行签名,可以利用infopath直接创建一个证书,也可以使用CA颁发的证书。如下图:

7.jpg

     3:然后就可以发布到Sharepoint表单库中了,发布的过程就不再介绍了。和平常的发布相同。

     当发布完毕后,如果你在制作Infopath的机器上直接填写表单,不会有任何问题。但是如果是其它机器从Sharepoint中填写表单,则会提示:

8.jpg

这是因为没有信任证书的原因,点击详细信息按钮,然后选择安装证书,直到安装证书成功。如下:

9.jpg

然后关闭infopath,再重新填写表单,就会发现复选框已经可以选择,选中复选框,然后选择打开。

10.jpg

这时就可以了,当然上面的代码略微有点问题,当文件没有文件名的时候点击保存按钮会提示没有文件名,当你保存成一个文件以后,再点击保存按钮就会发现没有问题了。

    另外再告诉大家一个价值5小时的经验,那就是在制作模板的时候不要把模板放在有中文名称的目录里面,否则运行regform的时候将会出错,报一个“System error”的错误。这个错误损耗掉了我至少5小时的时间。希望大家注意。

欢迎大家访问海洋工作室

logo.jpg

 

在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值