【分多人傻速来】C#如何做成一项服务,可供PHP这样的后台调用?

APM60- 2013-03-26 01:42:25
需求是这样的,要实现类似邮箱的文档在线预览功能。但不能把文件传的类似googleDocs这样的第3方网站上去转换。只能想办法在自己的服务器上转换了。
服务器是这样的:xp系统,PHP后台。
我查过一些资料。C#的winform程序,可以利用office的一些组件,实现把文档格式的文件转换为HTML格式的文件。
我觉得,如果能做成一个无窗体程序,开机自动运行,放在服务器端。
然后能由PHP后台触发,转换指定的文档文件,就能实现以上需求了。
听说可以做成一项服务,就是在services能够看到的那种。但是对此没什么头绪。
请大家指点一下,C#如何做成一项服务,可供PHP这样的后台调用?
...全文
193 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
APM60- 2013-04-15
  • 打赏
  • 举报
回复
自己解决。8楼方法后续。 相关网址:http://blog.csdn.net/yeness/article/details/7754486 设置一下office的com组件的访问权限就好了。
APM60- 2013-04-03
  • 打赏
  • 举报
回复
多谢楼上的建议,我再查查SWFTOOLS去。 对flash不熟,有没有相关的资料,或者能直接拿来用的flash控件? 虽然初衷是实现类似邮箱附件预览的功能,不过flash能实现的话也不错。 再次感谢楼上的帮助!
f231358 2013-04-03
  • 打赏
  • 举报
回复
web上放个flash控件 最简单
iceMung 2013-04-03
  • 打赏
  • 举报
回复
WCF+IIS宿主
nikolay 2013-04-03
  • 打赏
  • 举报
回复
LZ 你可以使用 SWFTOOLS 将一般的WORD EXCEL 文档转换为SWF格式,然后可以支持 在线预览等的操作非常方便。(类似百度文档这样的效果) 我当前的应用系统就是这样的: 前台(不管是用什么语言)负责把文件上传到服务器,然后把文件路径扔给WEB SERVICE(C#) WEB SERVICE调用 SWFTOOLS 转换为 SWF格式 然后返回给前台SWF地址 前台再现身出来
APM60- 2013-04-03
  • 打赏
  • 举报
回复
因为不是需要立刻实现的功能,所有这只是抽空试一下是否可行。 最新查到的资料是,C#可以生成dll,注册后,供PHP调用。 C#生成dll,其中引用了office的com控件实现文档转换。 当其他winform程序调用时正常。 但注册该dll后,由PHP调用时出错。 try catch了一下,输出“Word 出现问题”。 测试机器上装的是office2007。 C#实现文档转换部分:

          string fileFolder = Path.GetDirectoryName(wordFilePath);
          string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(wordFilePath);
          string htmlFilePath = fileFolder + @"\" + fileNameWithoutExtension + @".html";

          Object objWordPath = wordFilePath;
          Object objHtmlPath = htmlFilePath;
          MSWord.Application wordApp;
          MSWord.Document wordDoc;
          Object Nothing = Missing.Value;
          wordApp = new MSWord.ApplicationClass();
          wordDoc = wordApp.Documents.Add(ref objWordPath, ref Nothing, ref Nothing, ref Nothing);//===========PHP调用时这下面的语句执行不到
          object format = MSWord.WdSaveFormat.wdFormatFilteredHTML;
          wordDoc.SaveAs(ref objHtmlPath, ref format, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing,
            ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
          wordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
          wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
dll注册后,PHP调用部分:

<?php
$c= new COM("ComLibrary.Test");
echo $c->SaveWordAsHtml("D:\\ningtao\\xampp\\htdocs\\test.doc");
?>
不知道是由什么引起的。 初步怀疑有2中可能: 1、dll注册为COM+再被PHP调用时,没有正确的调用office的com组件。 2、被PHP调用时,由于文件的读写权限引起的问题。 大家有没有遇到过类似问题的,该如何解决?
失落的神庙 2013-03-26
  • 打赏
  • 举报
回复
或者用flash控件- -
失落的神庙 2013-03-26
  • 打赏
  • 举报
回复
像office文档 一般都有一些接口 转成html world也可以支持web样式 实在不行就读取内容和样式 都是可以的
shawn_yang 2013-03-26
  • 打赏
  • 举报
回复
webservice即可,生产结果是xml格式
LemonSmile_ 2013-03-26
  • 打赏
  • 举报
回复
友情帮顶,顺便接分,主要是学习学习
魚躍龍門 2013-03-26
  • 打赏
  • 举报
回复
将程序做成 windows服务,设置为开机自动启动.
niss 2013-03-26
  • 打赏
  • 举报
回复
听说分多人傻,所以来坐坐
阿怅 2013-03-26
  • 打赏
  • 举报
回复
用WCF, 然后寄宿本地服务,开机自启,怎样

110,476

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧