我正在尝试将照片添加到Excel Spread表但仍然收到以下错误?
错误1无法嵌入互操作类型"Microsoft.Office.Interop.Excel.ApplicationClass".请改用适用的界面.
ApplicationClass(); 在下面的代码行中以红色加下划线:
xlApp = new Excel.ApplicationClass();
有人可以告诉我如何解决这个问题?
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Core;
private void btnWriteSpreedSheet_Click(object sender, EventArgs e)
{
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass(); //This is where the problem is??????
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
//add some text
xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com";
xlWorkSheet.Cells[2, 1] = "Adding picture in Excel File";
xlWorkSheet.Shapes.AddPicture("C:\\csharp-xl-picture.JPG", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 50, 50, 300, 45);
xlWorkBook.SaveAs("csharp.net-informations.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlApp);
releaseObject(xlWorkBook);
releaseObject(xlWorkSheet);
MessageBox.Show ("File created !");
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Unable to release the Object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
}
Run Code Online (Sandbox Code Playgroud)
yms*_*yms 58
正如MSDN博客文章中所解释的那样,您也可以更改"禁用互操作类型",而不是禁用"嵌入互操作类型"
xlApp = new Excel.ApplicationClass();
Run Code Online (Sandbox Code Playgroud)
成
xlApp = new Excel.Application();
Run Code Online (Sandbox Code Playgroud)
虽然Excel.Application是一个接口,但我们可以实例化它,因为它使用CoClass属性进行修饰,如其他SO答案所述:https://stackoverflow.com/a/11039870/501196
使用此方法(Embed Interop Types = true)的优势在于,您需要在项目中部署较少的文件,嵌入式类型将仅包含应用程序实际使用的方法和类型.使用外部互操作程序集时,将导入引用库公开的所有类型和方法.