C# 存储.doc MS Word文件中的数学公式&;恢复它们
我正在处理包含数学公式和图像的Microsoft Word文件。 我需要获取这些C# 存储.doc MS Word文件中的数学公式&;恢复它们,c#,math,ms-word,.doc,C#,Math,Ms Word,.doc,我正在处理包含数学公式和图像的Microsoft Word文件。 我需要获取这些InlineShapes对象,并按原样存储它们,然后在需要时恢复它们 我知道如何从文件中获取InlineShape对象,问题是如何存储它们。将它们保存为图像不是一个选项 使用系统; using System; using System.Drawing; using System.IO; using System.Threading; using Page = System.Web.UI.Page; using Mic
InlineShapes
对象,并按原样存储它们,然后在需要时恢复它们
我知道如何从文件中获取InlineShape
对象,问题是如何存储它们。将它们保存为图像不是一个选项 使用系统;
using System;
using System.Drawing;
using System.IO;
using System.Threading;
using Page = System.Web.UI.Page;
using Microsoft.Office.Interop.Word;
using Microsoft.VisualBasic.Devices;
public partial class ReadIMG : System.Web.UI.Page
{
private Application m_word;
private int m_i;
protected void Page_Load(object sender, EventArgs e)
{
object missing = Type.Missing;
object FileName = Server.MapPath("~/LectureOrig/Word.docx");
object readOnly = true;
m_word = new Application();
m_word.Documents.Open(ref FileName,
ref missing, ref readOnly, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing,ref missing,ref missing);
try
{
for (int i = 1; i <= m_word.ActiveDocument.InlineShapes.Count; i++)
{
m_i = i;
// CopyFromClipboardShape();
Thread thread = new Thread(CopyFromClipbordInlineShape);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
}
}
finally
{
object save = false;
m_word.Quit(ref save, ref missing, ref missing);
m_word = null;
}
}
protected void CopyFromClipbordInlineShape()
{
InlineShape inlineShape = m_word.ActiveDocument.InlineShapes[m_i];
inlineShape.Select();
m_word.Selection.Copy();
Computer computer = new Computer();
//Image img = computer.Clipboard.GetImage();
if (computer.Clipboard.GetDataObject() != null)
{
System.Windows.Forms.IDataObject data = computer.Clipboard.GetDataObject();
if (data.GetDataPresent(System.Windows.Forms.DataFormats.Bitmap))
{
Image image = (Image)data.GetData(System.Windows.Forms.DataFormats.Bitmap, true);
image.Save(Server.MapPath("~/ImagesGet/image.gif"), System.Drawing.Imaging.ImageFormat.Gif);
image.Save(Server.MapPath("~/ImagesGet/image.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
}
else
{
LabelMessage.Text="The Data In Clipboard is not as image format";
}
}
else
{
LabelMessage.Text="The Clipboard was empty";
}
}
使用系统图;
使用System.IO;
使用系统线程;
使用Page=System.Web.UI.Page;
使用Microsoft.Office.Interop.Word;
使用Microsoft.VisualBasic.Devices;
公共部分类ReadIMG:System.Web.UI.Page
{
私人应用软件;
私人国际博物馆;
受保护的无效页面加载(对象发送方、事件参数e)
{
对象缺失=类型。缺失;
对象文件名=Server.MapPath(“~/讲师装备/Word.docx”);
对象只读=真;
m_word=新应用程序();
m_word.Documents.Open(参考文件名,
缺少ref,ref只读,缺少ref,缺少ref,
缺少参考,缺少参考,缺少参考,缺少参考,
缺少参考,缺少参考,缺少参考,缺少参考,
参考缺失,参考缺失,参考缺失);
尝试
{
对于(inti=1;i使用系统;
使用系统图;
使用System.IO;
使用系统线程;
使用Page=System.Web.UI.Page;
使用Microsoft.Office.Interop.Word;
使用Microsoft.VisualBasic.Devices;
公共部分类ReadIMG:System.Web.UI.Page
{
私人应用软件;
私人国际博物馆;
受保护的无效页面加载(对象发送方、事件参数e)
{
对象缺失=类型。缺失;
对象文件名=Server.MapPath(“~/讲师装备/Word.docx”);
对象只读=真;
m_word=新应用程序();
m_word.Documents.Open(参考文件名,
缺少ref,ref只读,缺少ref,缺少ref,
缺少参考,缺少参考,缺少参考,缺少参考,
缺少参考,缺少参考,缺少参考,缺少参考,
参考缺失,参考缺失,参考缺失);
尝试
{
对于(int i=1;我想把它们存储在资源文件或数据库中。?你能展示一下你目前正在使用的一些相关代码吗?这样会更容易理解你的问题。你能把inlineshape对象存储在内存中吗?@DJKRAZE,如果可能的话,我想把它们存储在数据库中。我添加了一个不同的解决方案请看下面的示例。您是否想过将它们存储在资源文件或数据库中。?请您展示一些目前正在使用的相关代码。这样会更容易理解您的问题。您能将inlineshape对象存储在内存中吗?@DJKRAZE,如果可能的话,我想将它们存储在数据库中。我添加了一个不同的解决方案请参见下面的示例,我认为将内联形状保存为图像不是一个选项?@jJack you right这不是一个选项。@DJKRAZE感谢您的代码,但我可以处理将内联形状存储为位图的问题,我需要以某种方式将它们存储为图像。我认为将内联形状保存为图像不是一个选项?@jJack you right这不是一个选项。@DJKRAZE谢谢s代表代码,但我可以处理将inlineshapes存储为位图,并且我需要以某种方式将它们存储为原样。