读书人

ASP.NET把word和Excel转换成HTML浏览的

发布时间: 2012-12-24 10:43:14 作者: rapoo

ASP.NET把word和Excel转换成HTML浏览的问题
近期看了一篇文章代码如下,由于我用的是VS2011的版本所以我添加引用的时候是
com--Microsoft Excel 12.0 object Library .// Microsoft Word 12.0 object Library
当把下面代码copy到VS中 using Excel会报错误,程序联想不到 Using Excel;求解答该如何引用啊


//网站 ---添加引用--com--Microsoft Excel 9.0 object Library .// Microsoft Word 9.0 object Library

using System.Reflection;
using Excel;
using System.Diagnostics;
using Microsoft.Office;

public partial class tel : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//word
Response.Write(Get_Html("New.doc"));
//excel
ExcelConvertToHtml("E:\\12345.xls","E:\\aaa.html");
}

protected void ExcelConvertToHtml(string xlsPath, string htmlPath)
{
try
{
Excel.Application app = new Excel.Application();
app.Visible = false;
Object o = Missing.Value;

/// _Workbook xls=app.Workbooks.Open(xlsPath,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o);

_Workbook xls = app.Workbooks.Open(xlsPath, o, o, o, o, o, o, o, o, o, o, o, o);
object fileName = htmlPath;
object format = Excel.XlFileFormat.xlHtml;//Html

// xls.SaveAs(ref fileName,ref format,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o);
xls.SaveAs(fileName, format, o, o, o, o, XlSaveAsAccessMode.xlExclusive, o, o, o, o);


//xls.SaveAs(
object t = true;
app.Quit();

Process[] myProcesses = Process.GetProcessesByName("EXCEL");
foreach (Process myProcess in myProcesses)
{
myProcess.Kill();
}
}
catch (Exception ex)
{
System.Console.Write(ex.Message);
// MessageBox.Show(ex.Message);
}
}
private string Get_Html(string FileName)
{

Word.ApplicationClass word = new Word.ApplicationClass();
Type wordType = word.GetType();
Word.Documents docs = word.Documents;

// 打开文件
Type docsType = docs.GetType();
// RAID.doc
// string newFileNamePath = this.Server.MapPath(mydata.Config.SysUploadPath + "/" + FileName);
string newFileNamePath = this.Server.MapPath("download/" + FileName);
Word.Document doc = (Word.Document)docsType.InvokeMember

("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { newFileNamePath, true,

true });

// 转换格式,另存为
Type docType = doc.GetType();
object saveFileName = newFileNamePath.Replace(".doc", ".htm");
//下面是Microsoft Word 9 Object Library的写法,如果是10,可能写成:
/*
docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
null, doc, new object[]{saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML});


*/
///其它格式:
///wdFormatHTML
///wdFormatDocument
///wdFormatDOSText
///wdFormatDOSTextLineBreaks
///wdFormatEncodedText
///wdFormatRTF
///wdFormatTemplate
///wdFormatText
///wdFormatTextLineBreaks
///wdFormatUnicodeText
docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatHTML });

// 退出 Word
wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);

string newFileName = FileName.Replace(".doc", ".htm");
return (newFileName);
}

}


[最优解释]
你调整过服务器上 DCOM 的设置没有?如果没调整过,默认是不允许和 Office 交互的。
这是我以前做 Word 操作时写的文档,繁体的,将就着看下吧

一、因列印室申使用 Word 件,默情形下匿名用法用 Word 件,所以必整默限置,如下:
  1、“始”-> “行”,入命令“dcomcnfg.exe”
  2、在打的程式窗口中,左的“主控台根目”->“元件服”->“”->“我的”->“DCOM 定”,若出提示信息,“否”即可。
  3、在窗口右找到“Microsoft Office Word 97 - 2003 文件”,右“容”->“”,“互式使用者 - 目前登入的使用者”。
  4、然後“安全定”附,“和用限”“自”,“”按,在出的框中,“新增”->“”->“立即找”,找到用“Network Service”,添加,置其限“本”及“本用”允。
  5、同4,置“存取限”“自”,增加用“Network Service”,置其限“本存取”允。
[其他解释]
引用:
引用:

Excel 对应的是 Microsoft Excel Application,不是 Microsoft Office Word 97 - 2003 文件

问一下 win7系统怎么找呢? 我跟你一步步来的到 窗口右找到“Microsoft Office Word 97 - 2003 文件”这步 找不到了。

那是你机器上并没有安装Office 2003,估计是2007或更高版本,所以没有。
[其他解释]
怎么没人 大侠们都去哪里了
[其他解释]
Excel 对应的是 Microsoft Excel Application,不是 Microsoft Office Word 97 - 2003 文件
[其他解释]
引用:
Excel 对应的是 Microsoft Excel Application,不是 Microsoft Office Word 97 - 2003 文件


问一下 win7系统怎么找呢? 我跟你一步步来的到 窗口右找到“Microsoft Office Word 97 - 2003 文件”这步 找不到了。
[其他解释]
引用:
引用:

引用:

Excel 对应的是 Microsoft Excel Application,不是 Microsoft Office Word 97 - 2003 文件

问一下 win7系统怎么找呢? 我跟你一步步来的到 窗口右找到“Microsoft Office Word 97 - 2003 文件”这步 找……

问题解决了 因为我装的是64位的所以找不到 comexp.msc -32 这样就能找到,然后引用
Microsoft.Office.Interop.Excel 时 应把他的属性Embed Interop Type设置为False:就OK了
[其他解释]
引用:
引用:
引用:

引用:

Excel 对应的是 Microsoft Excel Application,不是 Microsoft Office Word 97 - 2003 文件

问一下 win7系统怎么找呢? 我跟你一步步来的到 窗口右找到“Microsoft Office ……

Embed Interop Type设置为False 这个属性是在那块设置的 我没找到

读书人网 >asp.net

热点推荐