您的位置:首页 > 其它

向EXCEL中插入图片测试

2009-09-23 17:27 796 查看
2009.9.23 今天学习的是如何向EXCEL中插入图片

遇到的问题有
1 错误类型“Office.MsoTriState”在未被引用的程序集中定义。必须添加对程序集“Office, Version=2.1.0.0, Culture=neutral, PublicKeyToken=null”的引用。

如果你出现了这个问题,请注意下你的EXCEL版本,因为EXCEL的DLL有2个 一个事11对应着2003,12 对应着2007.删除额外的EXCEL重新生成下就行了。对这个问题弄了半天才弄好。浪费了很多时间,我是直接引用了原来项目中使用的EXCEL 结果是12的 我机器安装的是2003

2 错误参数“2”: 无法从“Microsoft.Office.Core.MsoTriState”转换为“Microsoft.Office.Core.MsoTriState[]”

这个问题很是恼火 看了原定义
public enum MsoTriState
{
msoTriStateToggle = -3,
msoTriStateMixed = -2,
msoTrue = -1,
msoFalse = 0,
msoCTrue = 1,
}
确信没错,还是版本问题引起的问题,另外你需要添加OFFICE.DLL的引用,同上注意版本问题。

版本问题出错截图



using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Core;

#region EXCEL插入图片测试

Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

Microsoft.Office.Interop.Excel.Workbooks workbooks = excel.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveSheet;//取得sheet1

excel.Visible = true;//这里为是否打开EXCEL 打开的话就可以看到一行一行的添加过程! 如果要远程的话还是关掉了

//表名
worksheet.Name = "测试往EXCEL里面添加图片";

worksheet.Shapes.AddPicture("E://工作//ConsoleApplication1//test.jpg", MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150);

// Shape AddPicture(
// [In] string Filename,
// [In] MsoTriState LinkToFile,
// [In] MsoTriState SaveWithDocument,
// [In] float Left,
// [In] float Top,
// [In] float Width,
// [In] float Height
//);

try
{
//获取或设置一个值,该值指示工作簿自上次保存以来是否进行了更改。
//如果工作簿从未保存过,则其 Path 属性返回空字符串 ("")。
//如果希望关闭修改过的工作簿而不进行保存或不被提示进行保存,则可将此属性设置为 true。
workbook.Saved = true;

//将工作簿的副本保存到文件中,但不修改内存中打开的工作簿。
workbook.SaveCopyAs("E://工作//ConsoleApplication1//test.xls");
//worksheet.SaveAs(filename, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
//Worksheet.Dispose 方法 (Boolean)释放由 Worksheet 使用的非托管资源并可以选择释放托管资源。
// Worksheet.Delete 方法
//删除基础 Microsoft.Office.Interop.Excel.Worksheet 对象,但不删除宿主项。强烈建议不使用此方法。
//worksheet.Delete();
excel.ActiveWorkbook.Close(false, null, null); //这里是否提示用户保存 FALSE的话为直接保存
excel.Workbooks.Close();

}
catch (Exception ex)
{

throw;
}
finally
{
excel.Quit(); // 退出 Excel
//System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
//System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
//System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
GC.Collect();
}

#endregion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: