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

推荐订阅源

I
InfoQ
S
SegmentFault 最新的问题
N
Netflix TechBlog - Medium
B
Blog
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 聂微东
Last Week in AI
Last Week in AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
大猫的无限游戏
大猫的无限游戏
U
Unit 42
J
Java Code Geeks
IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
博客园 - 叶小钗
T
The Blog of Author Tim Ferriss
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
腾讯CDC

博客园 - 阿哲

SqlServer 2005 快速设置字段/表 的描述字段 string:值类型?引用类型?[转] SqlServer2005常用sql语句 SQL中FOR XML子句的各种用法 获得Windows中文件类型名称 完成类似QQ邮箱中‘HTML方式查看’功能查看Office文件 vs2008生成自定义dll,VS2008发布、生成网站时设置固定的dll文件名 开源.Net CMS系统 [转] 测试使用Windows Live Writter写Blog 试用Windows Live Mail OutlookExpress使用技巧 剩余的GMail邀请 实体类+自定义控件=? 用反射+特性列出所有的枚举变量及其描述信息,绑定到DropDownList上。 有关.NET和RS232设备通讯 .NET资源(收藏) 转:使用P/Invoke来开发用于与串行设备通讯的.NET基类(翻译) 最近有空,研究了一下.NET的通讯方面 实体和实体的集合-续2
将Visio文件装换成HTML文件(在服务器上转换,客户端无需安装...
阿哲 · 2009-05-22 · via 博客园 - 阿哲

需求见我的前一篇文章:类似QQ邮箱中‘HTML方式查看’功能查看Office文件

当时是直接写的一个方法,支持word、excel、ppt文件,现在写visio文件,则改成了单例模式。

废话不说,上代码: 

public class VisioApplication
{
    
private static readonly object sync = new object();
    
private static Microsoft.Office.Interop.Visio.Application vso;
    
private VisioApplication() { }public static Microsoft.Office.Interop.Visio.Application GetInstance()
    {
        
//单例模式,双重锁定
        if (vso == null)
        {
            
lock (sync)
            {
                
if (vso == null)
                {
                    vso 
= new Microsoft.Office.Interop.Visio.Application();
                    vso.Visible 
= false;//打开应用程序就隐藏
                    vso.AlertResponse = (short)1;//重要:转换时不用打开确认窗口,直接转换
                }
            }
        }
        
return vso;
    }
public static void Quit()
    {

        
if (vso != null)
        {
            vso.Quit();
        }
        GC.Collect();
    }
/// <summary>
    
/// 将Visio文档转换成HTML格式
    
/// </summary>
    
/// <param name="VisioFilePath"></param>
    public static void VisioToHtmlFile(string VisioFilePath)
    {
        Microsoft.Office.Interop.Visio.Application vso 
= GetInstance();
        Microsoft.Office.Interop.Visio.Document doc 
= null;
        Microsoft.Office.Interop.Visio.SaveAsWeb.VisSaveAsWeb saveAsWeb;
        Microsoft.Office.Interop.Visio.SaveAsWeb.VisWebPageSettings webPageSettings;
        
try
        {
            
//设置输出文件路径
            string strTarget = VisioFilePath.Substring(0, VisioFilePath.LastIndexOf(".")) + ".html";
            
//打开文档,本来想后台打开,但是无论如何都会闪一下,看大家有没有什么好的办法
            doc = vso.Documents.OpenEx(VisioFilePath,
                (
short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenRO
                
+ (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenMinimized
                
+ (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenHidden
                
+ (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenNoWorkspace);
            
//获得转换html文件用的对象
            saveAsWeb = (Microsoft.Office.Interop.Visio.SaveAsWeb.VisSaveAsWeb)vso.SaveAsWebObject;
            
//设置格式
            webPageSettings = (Microsoft.Office.Interop.Visio.SaveAsWeb.VisWebPageSettings)saveAsWeb.WebPageSettings;
            webPageSettings.TargetPath 
= strTarget;
            webPageSettings.QuietMode 
= 1;
            webPageSettings.SilentMode 
= 1;//安静模式,不然会显示转换进度窗口

            saveAsWeb.AttachToVisioDoc(doc);
//将文档添加到需要转换的列表中
            saveAsWeb.CreatePages();//开始转换
        }
        
finally
        {
            
if (doc != null)
            {
                doc.Close();
            }
        }
    }
}

本例子代码在VS2008、Office Visio 2007下测试通过,使用前需引用 相应的com组件

放在首页的原因是:希望大家帮个忙!如何让visio程序打开的时候不显示,在后台打开,我写的代码无论如何都会闪一下,谢谢!。