读书人

C#读取word文档解决方案

发布时间: 2013-01-18 10:22:42 作者: rapoo

C#读取word文档
我现在要把word文档给读取出来,必须要原样输出,比如文档里有表格,必须输出的也是表格。。求高手帮忙,希望有源码,提供信息者又分。。拜托大家了
[解决办法]
DSOframer 控件 可以读取 office 文件 包括word
[解决办法]
http://luckyjaky.javaeye.com/blog/348789
[解决办法]
不知道你要输出到什么地方?

[解决办法]
我的思想:先转换成网页格式html,再读取,但是这样.html文件里面会有body等属性,你要把他们去掉。
[解决办法]
Word.ApplicationClass wordApp=new ApplicationClass();
object file=path;
object nullobj=System.Reflection.Missing.Value;
Word.Document doc = wordApp.Documents.Open(
ref file, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj);

doc.ActiveWindow.Selection.WholeStory();
doc.ActiveWindow.Selection.Copy();
IDataObject data=Clipboard.GetDataObject();
string str=data.GetData(DataFormats.Text).ToString();
doc.Close();
HTML格式正则获取
[解决办法]
namespace OfficeManager
{
public WordClass()
{
m_WordApp = new ApplicationClass();
}
#region 属性
public int WordCount
{
get
{
if (m_Document != null)
{
Range rng = m_Document.Content;
rng.Select();
return m_Document.Characters.Count;
}
else
return -1;


}
}
public object Missing
{
get
{
return missing;
}
}
#endregion
#region 基本任务
#region CreateDocument
public void CreateDocument(string template)
{
object obj_template = template;
if (template.Length <= 0) obj_template = missing;
m_Document = m_WordApp.Documents.Add(ref obj_template, ref missing, ref missing, ref missing);
}
public void CreateDocument()
{
this.CreateDocument("");
}
#endregion
#region OpenDocument
public void OpenDocument(string fileName, bool readOnly)
{
object obj_FileName = fileName;
object obj_ReadOnly = readOnly;
m_Document = m_WordApp.Documents.Open(ref obj_FileName, ref missing, ref obj_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);
}
public void OpenDocument(string fileName)


{
this.OpenDocument(fileName, false);
}
#endregion
#region Save & SaveAs
public void Save()
{
if (m_Document != null)
m_Document.Save();
}
public void SaveAs(string fileName)
{
object obj_FileName = fileName;
if (m_Document != null)
{
m_Document.SaveAs(ref obj_FileName, 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, ref missing, ref missing);
}
}
#endregion
#region Close
public void Close(bool isSaveChanges)
{
object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
if (isSaveChanges)
saveChanges = WdSaveOptions.wdSaveChanges;
if (m_Document != null)
m_Document.Close(ref saveChanges, ref missing, ref missing);
}
#endregion


#region 文档中的文本和对象
public void AppendText(string text)
{
Selection currentSelection = this.m_WordApp.Selection;
// Store the user's current Overtype selection
bool userOvertype = this.m_WordApp.Options.Overtype;
// Make sure Overtype is turned off.
if (this.m_WordApp.Options.Overtype)
{
this.m_WordApp.Options.Overtype = false;
}
// Test to see if selection is an insertion point.
if (currentSelection.Type == WdSelectionType.wdSelectionIP)
{
currentSelection.TypeText(text);
currentSelection.TypeParagraph();
}
else
if (currentSelection.Type == WdSelectionType.wdSelectionNormal)
{
// Move to start of selection.
if (this.m_WordApp.Options.ReplaceSelection)
{
object direction = WdCollapseDirection.wdCollapseStart;
currentSelection.Collapse(ref direction);
}
currentSelection.TypeText(text);


currentSelection.TypeParagraph();
}
else
{
// Do nothing.
}
// Restore the user's Overtype selection
this.m_WordApp.Options.Overtype = userOvertype;
}
#endregion
#region 搜索和替换文档中的文本
public void Replace(string oriText, string replaceText)
{
object replaceAll = WdReplace.wdReplaceAll;
this.m_WordApp.Selection.Find.ClearFormatting();
this.m_WordApp.Selection.Find.Text = oriText;
this.m_WordApp.Selection.Find.Replacement.ClearFormatting();
this.m_WordApp.Selection.Find.Replacement.Text = replaceText;
this.m_WordApp.Selection.Find.Execute(
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref replaceAll, ref missing, ref missing, ref missing, ref missing);
}

#endregion
#region 文档中的Word表格
/// <summary>
/// 向文档中插入表格
/// </summary>
/// <param name="startIndex">开始位置</param>
/// <param name="endIndex">结束位置</param>


/// <param name="rowCount">行数</param>
/// <param name="columnCount">列数</param>
/// <returns></returns>
public Table AppendTable(int startIndex, int endIndex, int rowCount, int columnCount)
{
object start = startIndex;
object end = endIndex;
Range tableLocation = this.m_Document.Range(ref start, ref end);
return this.m_Document.Tables.Add(tableLocation, rowCount, columnCount, ref missing, ref missing);
}
/// <summary>
/// 添加行
/// </summary>
/// <param name="table"></param>
/// <returns></returns>
public Row AppendRow(Table table)
{
object row = table.Rows[1];
return table.Rows.Add(ref row);
}
/// <summary>
/// 添加列
/// </summary>
/// <param name="table"></param>
/// <returns></returns>
public Column AppendColumn(Table table)
{
object column = table.Columns[1];
return table.Columns.Add(ref column);
}
/// <summary>
/// 设置单元格的文本和对齐方式
/// </summary>
/// <param name="cell">单元格</param>


/// <param name="text">文本</param>
/// <param name="align">对齐方式</param>
public void SetCellText(Cell cell, string text, WdParagraphAlignment align)
{
cell.Range.Text = text;
cell.Range.ParagraphFormat.Alignment = align;
}
#endregion
#region IDisposable 成员
public void Dispose()
{
try
{
if (m_WordApp != null)
m_WordApp.Quit(ref missing, ref missing, ref missing);
}
catch (Exception ex)
{
Debug.Write(ex.ToString());
}
}
#endregion
}
}


读书人网 >C#

热点推荐