如何实现WORD文档自动导入网站数据库Word格式.doc
《如何实现WORD文档自动导入网站数据库Word格式.doc》由会员分享,可在线阅读,更多相关《如何实现WORD文档自动导入网站数据库Word格式.doc(4页珍藏版)》请在冰豆网上搜索。
那么就用客户端方案了,想到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("
)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("
<
body"
str=str.Substring(ipos+5);
ipos=str.IndexOf("
>
"
str=str.Substring(ipos+1);
/body"
str=str.Substring(0,ipos);
intjpos=-1;
src=\"
this.listBox1.Items.Clear();
List<
string>
strlist=newList<
();
while(ipos!
=-1)
{
jpos=str.IndexOf("
\"
ipos+5);
strlist.Add(str.Substring(ipos+5,jpos-ipos-5));
ipos=str.IndexOf("
}
//开始上传图片
webfilelist=newList<
WebClientmyWebClient=newWebClient();
for(inti=0;
i<
strlist.Count;
i++)
strings=strlist[i];
s=s.Replace("
file:
///"
"
stringfname=Encoding.UTF8.GetString(myWebClient.UploadFile(this.textBox1.Text,"
s));
webfilelist.Add(fname);
this.listBox1.Items.Add(fname);
//替换文章中的图片链接
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接口,那么我们就可以利用这个接口读取图片,并把它编码上传到服务器,不就和刚才的程序一样了吗?
真是一个天才的想法,等有时间时我来完成它。