惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - Ipark

[SharePoint 2010 User Profile Service] 关于User Profile Service的一些提示 搬到博客堂了! [SharePoint WorkFlow InfoPath]在InfoPath表单内提交表单并启动工作流 [Live Writer Test]台南地震,海底光缆大面积中断,MSN登不上以及境外网站无法访问 [ECM IRM RMS - 1]WSS V3中的IRM解决方案概述 microsoft.com全新改版,告诉你MOSS的性能不是问题,她很好使!! [WSS V3 WorkFlow]利用Visual Studio开发WSS V3工作流视频资料 RMS SP2 & MOSS 2007开启文档管理新时代,让文档权限保护无处不在 在KPI列表中使用Excel Services发布的工作簿 3步完成Excel Services的初始化和使用(使用Excel Services的最简步骤) 应用SharePoint的Workflow须记住的10句话!(也许还有更多:) SharePoint 中的Workflow,你用着爽吗? MOSS2007 B2TR 下载,安装指南以及SDK下载(all from ms sharepoint team) SharePoint Portal Server 2003 Search does't like .Net Framework 2.0!!! (for Error in PortalCrawl Web Service solution) WSS V3和MOSS2007的区别 讨论:为什么Web不行?Console可以?---为什么Document Library不行?Generic List可以?(MOSS2007) 《Microsoft Office SharePoint Server 2007 前瞻技术指南》第八章预览_Excel Services WSS V3 中用代码遍历列表的方法(支持文件夹的列表的项目遍历) Windows Rights Management Services SP2 BETA下载
MOSS-Excel Services-Udf(用户自定义函数)-SQLExcuteUdf 查询sql server数据的用户自定义函数
Ipark · 2006-10-29 · via 博客园 - Ipark

MOSS的Excel Services相信大家都听说过.我们可以创建一个引用了外部数据的Excel文件,然后发布到Excel Services中,然后就可以让用户在网页上看到数据库中的数据的实时的状态.

我们会有这样的设想,我在Excel中设计一个计算逻辑,然后从数据库中取一些值出来,填到Excel中,然后让Excel 自动去计算,然后我们可以把计算分析后的结果呈现给拥护.恩,这个设想很好!我们要实现这个想法需要做三件事情:

1)我们要能从数据库中取出特定的数,可能需要取到某一个数
2)我们需要Excel Services能支持我们直接查数据库
3)我们把设计好的Excel发布出去

第一件事情我们自然想到了SQL语句比如"Select value  From table..."之类.
很遗憾,Excel Services不支持直接查询数据库,只支持SQL Server Analysis Services等间接的方式,可能是处于安全或者其他考虑,对于不了解SQL Server Analysis Services的兄弟来说就很难了  : (

这么一个好的设想,难道就实现不了吗?庆幸的是,Excel Services支持Udf用户自定义函数,我们可以通过用户自定义函数开发一个直接查数据库的Udf,使用我们熟悉的SQL语句.

Udf的开发过程:
1)VS2005新建一个类工程,应用经典目录下 12/ISAPI/Microsoft.Office.Excel.Server.Udf.dll
2)编写自定义的函数
3)注册Udf

关于Udf中的支持的返回值类型等可以参考: http://officeblogs.net/excel/UDFs%20for%20Excel%20client%20and%20server.doc

SQLExcuteUdf是为实现了一个方法取数据库中的某个值而设计的:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Microsoft.Office.Excel.Server.Udf;
using System.Data.SqlClient;

namespace SQLExcuteUdf
{
    [UdfClass]
    
public class SQLExcute
    
{
        
/// <summary>
        
/// 取SQL Server数据库中的单个值
        
/// </summary>
        
/// <param name="constr">数据库链接</param>
        
/// <param name="comstr">SQl语句</param>
        
/// <returns></returns>

        [UdfMethod]
        
public string GetSingleDataFromSQL(string constr, string comstr)
        
{
            
try 
            
{
                
string tempstring = "无数据";
                SqlConnection mycon 
= new SqlConnection(constr);
                mycon.Open();
                SqlCommand mycom 
= new SqlCommand(comstr, mycon);
                SqlDataReader myreader 
= mycom.ExecuteReader();
                
if (myreader.Read())
                
{
                    tempstring 
= myreader[0].ToString();
                }

                mycon.Close();
                mycon.Dispose();
                
return tempstring;
            }

            
catch (Exception ex)
            
{
                
return "运行错误,错误:"+ex.Message;
            }

        }

    }

}

编译把dll进行注册

根据Udf的设计,需要给函数提供一个数据库连接和SQL语句,在Excel中我是需要用这个Udf查数据库中某个值,直接在某个单元格输入函数"=GetSingleDataFromSQL($A$1,B4)".因为Excel不知道这个函数所以在这里会显示"#Name!"之类的东西,如果把Udf作成xll放到Excel中就能直接在Excel中用了,这里就不做介绍了. 

然后,我把这个发布到Excel Services中.
当我在浏览器中访问的时候,Excel Services就会利用Udf去数据库中查到一个值,显示出来,当数据库中数据有更新的时候,刷新页面会实时更新数据.

这里下载源代码.

预告:
如何利用Excel Services取实数据作为KPI列表数据源