使用Jcom组件操作Visio批量导出图片

首先说一下这几天的流水账。。。。


    总算改完一个呼和的了。。。周六周日彻底的睡了两天。。。。结果周六去北京西一看火车票。。。提前20天的动车居然没票了。。。。狗日的。。。。。。郁闷。。。。。


    这周正式录数据。。。录得想哭呢。。。主要是格式不对。。。整理格式就要半天。。。。再加上地图又弄不好,好像是拿回来的数据缺个东西。。。哎。。。下次再去拿的时候一定要事先把需要的数据格式整理出来啊。。。。

。。。

    前几天在网上和CCAV小白还有宝宝两个以前的同学在网上聊了几句。。。被彻头彻尾的鄙视了。。。。意思是没有进取心之类的。。。。。。~~~~(>_<)~~~~


    相忘江湖的CCAV更厉害。。。我看他是想拿到北京户口以后立马跳槽。。。不过号称还有违约金。。。而且他的时间还有两年。。。。可怜啊。。。。。不过书这家伙硬气。。。。7000就走。。。我看他是突然发现养家糊口很费钱了。。。。。。。


  
另外一个宝宝直接去了一个给银行做项目的公司。。。每天在天津。。。。不过不知道具体是做什么。。内部管理系统?综合业务?卡部?信贷管理?基金投资管理?。。。因为原来参与过信贷管理系统的开发。。。。所以总感觉现在的银行管理很混乱。。。。。不过嘛。。。还是好啊。。。银行那种地方。。。穷的只剩下钱了。。。。


    宿舍里有个找工作的哥们儿挺逗。。。好像思维挺活跃。。。。找工作找的专业可谓是千变万化。。。从办公室管理到舞厅歌手。。。昨天居然还和我说想创业要开个食品企业。。。汗一下先。。。。


———————————————我是分割线————————————我是分割线—————————————————


      拿回来的数据有很多是MAPINFO和VISIO格式的数据,但是系统是要求上传成图片格式的,MAPINFO格式的转换成图片有人做了。。。可怜这个Visio的只能我弄了。。。郁闷。。。。到处找都找不到好的批量软件。。。打开VisualStudio看了看。。。痛哭流涕。。。俺又不会dot
net。。。只能用java了。。。。


  
     到网上找。。。在javaEye上看见有个人的代码写的很好。。。可惜找不到传说中的com.visio.IVApplication这些类。。到com4j里边找也找不到。。。后来便决定用jacob。。。不过正好在工程里看见有人用jcom转换word文档的程序。。。最后还是准备用jcom了。。。


    至于使用jcom.dll这个文件要放到哪里这个大家百度或者谷歌一下就知道了。。。


    代码:(部分)

	private void visioTest(String vsdFilePath, String outPath) {
		ReleaseManager rm = new ReleaseManager();
		IDispatch visioApp;
		try {
			// 调用Visio程序
			visioApp = new IDispatch(rm, "Visio.Application");
			// 为了方便程序调试,设置成了显示打开Visio,正式用改成false
			visioApp.put("Visible", new Boolean(true));
			IDispatch documents = (IDispatch) visioApp.get("Documents");
			// 打开文件
			IDispatch doc = (IDispatch) documents.method("open",
					new Object[] { vsdFilePath });
			// 得到所有的Pages
			IDispatch pages = (IDispatch) doc.get("Pages");
			// 得到Page的数量
			int pagesCount = Integer.parseInt(pages.get("Count").toString());
			System.out.println(pagesCount);
			// 循环得到每个Page
			for (int i = 1; i <= pagesCount; i++) {
				IDispatch page = (IDispatch) pages.method("item",
						new Object[] { new Integer(i) });
				// 输出Page的名称
				System.out.println(page.get("Name"));
				// 将该Page保存为图片
				page.method("Export", new Object[] { outPath + page.get("Name")
						+ ".jpg" });
			}
			Thread.sleep(5000);
			// Quit without saving
			visioApp.method("quit", null);
			visioApp.release();

		} catch (JComException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
 


———————————————————分割线————————分割线————————————————


代码很简单。。。。不过一开始用的“SaveAs”怎么也不成功。。。后来郁闷的到MSDN上看了看Visio的文件格式。。。才发现是Documents->Document->Pages->Page其中Document其实就是代码中的doc变量,而最后用get("item"...)循环打开Page。。。发现Page用的是Export方法...导出。。。搞定!!!


剩下的明天再改。。。准备做成一个swing的。。。。或者现学现卖用C#做成一个exe的...

 

偶的另外一个博客:http://blog.tom.com/monicc     有空大家也来踩踩。。。。

你可能感兴趣的:(工作,swing,项目管理,百度,visio)