2014年7月9日 星期三

Microsoft.Office.Interop.Excel

#region Open xlsx file.
    Microsoft.Office.Interop.Excel.Application excel = new Application();
    Workbook workBook = excel.Workbooks.Open(FileLocation);
    Workbook myBook = excel.Workbooks[1];
    Microsoft.Office.Interop.Excel._Worksheet workSheet;
#endregion

#region Set Active Sheet 1
    workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.Worksheets[1];
    Microsoft.Office.Interop.Excel.Range wsCell = workSheet.Cells;
#endregion


//Insert Image
protected void insImg(string Rag, string fileLocation, object wkst, int width, int height)
{
    float left, top;
    left = Convert.ToSingle(((Worksheet)wkst).get_Range(Rag).Left);
    top = Convert.ToSingle(((Worksheet)wkst).get_Range(Rag).Top);
    ((Worksheet)wkst).Shapes.AddPicture(fileLocation, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, left, top, width, height);
}//指定Range
protected void insImg(string fileLocation, object wkst, object wcell, float left, float top, int width, int height)
{
    ((Worksheet)wkst).Shapes.AddPicture(fileLocation, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, left, top, width, height);
}//指定特定位置


//Embed Files
protected void insItem(string Rag, string fileLocation, object wkst, object Left, object Top)
{
    OLEObjects oleObjects1 = (Microsoft.Office.Interop.Excel.OLEObjects)((Worksheet)wkst).OLEObjects(Type.Missing);
    ((Worksheet)wkst).get_Range(Rag, Rag).Select();
    oleObjects1.Add(
        Type.Missing,         // ClassType
        @fileLocation,        // Filename
        false,                       // Link
        true,                        // DisplayAsIcon
        Type.Missing,         // IconFileName
        Type.Missing,         // IconIndex
        Type.Missing,         // IconLabel
        Left,                        // Left
        Top,                        // Top
        Type.Missing,          // Width
        Type.Missing           // Height
        );
}//指定Range
protected void insItem(string fileLocation, object wkst, object wcell, object Left, object Top)
{
    OLEObjects oleObjects1 = (Microsoft.Office.Interop.Excel.OLEObjects)((Worksheet)wkst).OLEObjects(Type.Missing);
    ((Worksheet)wkst).get_Range((Microsoft.Office.Interop.Excel.Range)wcell, (Microsoft.Office.Interop.Excel.Range)wcell).Select();
    oleObjects1.Add(
        Type.Missing,         // ClassType
        @fileLocation,        // Filename
        false,                       // Link
        true,                        // DisplayAsIcon
        Type.Missing,         // IconFileName
        Type.Missing,         // IconIndex
        Type.Missing,         // IconLabel
        Left,                        // Left
        Top,                        // Top
        Type.Missing,          // Width
        Type.Missing           // Height
    );
}//指定特定位置


#region Release & Kill Process
    //Release
    RLS(workSheet);
    if (workBook != null) workBook.Close(false, Type.Missing, Type.Missing);
    RLS(workBook);
    if (excel != null) excel.Quit();
    RLS(excel);

    //Kill Process EXCEL.EXE
    foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses())
    {
        if (p.ProcessName.ToUpper() == "EXCEL")
            p.Kill();
    }
#endregion

private void RLS(Object o)
{
    try { System.Runtime.InteropServices.Marshal.ReleaseComObject(o); }
    catch { }
    finally { o = null; }
}