如何实现WORD文档自动导入网站数据库.doc
《如何实现WORD文档自动导入网站数据库.doc》由会员分享,可在线阅读,更多相关《如何实现WORD文档自动导入网站数据库.doc(4页珍藏版)》请在冰豆网上搜索。
如何实现WORD文档自动导入网站数据库
最近,本人在制作个人网站时发现,如何把手中的WORD文档快速的上传到自己的网站是个大问题。
主要的拦路虎就是文档中嵌入的图片如何上传,秉承网人传统“不懂问百度”的精神,我在百度上搜了好久,发现这真的是一个好问题,现成的解决方法还是有的:
首先有个台湾的编辑器在很久之前就解决了这个问题,它是eWebEditor,它的解决方案是在你的机器上安装一个浏览器插件,我试用了一下格式保留不错,图片正确上传。
但很不幸它要收费,对于我辈屌丝来说,收费的东东用不起啊。
而且在百度搜了下,听人说eWebEditor还存在很大的安全问题,所以自然就pass了。
还有一个是百度投资在搞的ueditor,可惜里面的导入功能现在还在测试,无法提供给我们使用,而且经过我的测试,它的导入功能无法导入.doc文档,只能支持.docx文档,当然它的导入功能还是很好使的,只不过受制于人不是我们的追求。
所以我决定自己搞一个东西实现这个功能。
如何实现呢,解决方案有2个选择:
客户端方案和服务端方案,由于我的个人网站时PHP语言,处理WORD文档的能力比较弱,经过我的搜索好像只有phpword提供这样的功能,但要处理这么麻烦的工作,它的能力还力有未逮。
那么就用客户端方案了,想到WORD的老东家是微软,所以我选择了C#作为开发语言,事实证明C#开发的确给我省了很多时间。
下面我就开发过程说几点感想:
1、首先选择开发方案,我选择了一个最简单的开发方案:
打开WORD文档并把文档复制到剪贴板,C#程序读取剪贴板内容并把图文上传到网站。
这样的方案省却了操作WORD文件,降低了编程难度。
2、解决核心问题,这个方案的核心问题是:
读取剪贴板上的HTML代码,上传HTML代码中的图片,替换HTML代码中的图片链接。
经过百度搜索发现,C#要实现这些功能都非常简单,核心代码如下:
剪贴板读取HTML:
Clipboard.GetData("HtmlFormat");
上传图片:
myWebClient.UploadFile(“上传地址”,"POST",“上传文件名”)
替换字符:
str=str.Replace(strlist[i],webfilelist[i]);
3、确定了核心问题的解决方法,接下来就是代码的编写。
代码如下:
if(Clipboard.ContainsText(TextDataFormat.Html))
{
System.IO.MemoryStreamvMemoryStream=
Clipboard.GetData("HtmlFormat")asSystem.IO.MemoryStream;
vMemoryStream.Position=0;
byte[]vBytes=newbyte[vMemoryStream.Length];
vMemoryStream.Read(vBytes,0,(int)vMemoryStream.Length);
stringstr=Encoding.UTF8.GetString(vBytes);
intipos=str.IndexOf("
str=str.Substring(ipos+5);
ipos=str.IndexOf(">");
str=str.Substring(ipos+1);
ipos=str.IndexOf("
str=str.Substring(0,ipos);
intjpos=-1;
ipos=str.IndexOf("src=\"");
this.listBox1.Items.Clear();
Liststrlist=newList();
while(ipos!
=-1)
{
jpos=str.IndexOf("\"",ipos+5);
strlist.Add(str.Substring(ipos+5,jpos-ipos-5));
ipos=str.IndexOf("src=\"",ipos+5);
}
//开始上传图片
Listwebfilelist=newList();
WebClientmyWebClient=newWebClient();
for(inti=0;i{
strings=strlist[i];
s=s.Replace("file:
///","");
stringfname=Encoding.UTF8.GetString(myWebClient.UploadFile(this.textBox1.Text,"POST",s));
webfilelist.Add(fname);
this.listBox1.Items.Add(fname);
}
//替换文章中的图片链接
for(inti=0;i{
str=str.Replace(strlist[i],webfilelist[i]);
}
str=str.Replace("'","");
//复制到剪贴板
this.richTextBox1.Text=str;
Clipboard.SetText(str);
}
else
{
MessageBox.Show("剪贴板中没有发现HTML资源。
");
}
}
4、注意:
这个导入程序的使用必须要网站配合接收图片文件,否则无法运行。
另外,在工作过程中我发现,WORD复制到剪贴板时会提供双份的图片,WPS则提供单份的图片而且是PNG格式的。
所以我一般使用WPS来复制到剪贴板。
当然最主要的还是我的程序没有优化导致的。
现在,这个程序在我的电脑上运行良好,只用于我的网站导入WORD文档之用。
对于绝大多数人而言,这个程序无法为他工作,因为想要使用它,您还得懂点儿编程。
想要索取程序的人请与米斯唐联系:
QQ147885198,期待您对于程序的改进。
程序截图如下:
最后,程序可以改进的地方实在是太多了,它只是一个实验程序。
最近,我在想是否可以用Javascript来实现呢?
越想越觉得可行,因为最新版的浏览器都支持FileReader接口,那么我们就可以利用这个接口读取图片,并把它编码上传到服务器,不就和刚才的程序一样了吗?
真是一个天才的想法,等有时间时我来完成它。