更新下Excel操作类

/**

 * Excel控制类

 * 作者:王文斌

 * 版本:bate2  2008-6-6

 * 备注:部分方法未经测试,使用时请注意。新增复制模板方法。支持26列以上表格。

 * 使用方法:确保已安装office03,并安装Excel的.net开发支持

 * 引用com口dll

 * */

using System;

using System.Reflection;

using Microsoft.Office.Interop.Excel;

using Microsoft.Office.Core;

using System.Drawing;



namespace WWBClassLib.Excel

{

    /// <summary>

    /// ExcelClass 的摘要说明。

    /// </summary>

    public class ExcelCtrl

    {

        /// <summary>

        /// 构建ExcelClass类

        /// </summary>

        public ExcelCtrl()

        {

            this.m_objExcel = new Microsoft.Office.Interop.Excel.Application();

        }

        /// <summary>

        /// 构建ExcelClass类

        /// </summary>

        /// <param name="objExcel">Excel.Application</param>

        public ExcelCtrl(Microsoft.Office.Interop.Excel.Application objExcel)

        {

            this.m_objExcel = objExcel;

        }



        /// <summary>

        /// 列标号

        /// </summary>

        private string AList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";



        /// <summary>

        /// 获取描述区域的字符

        /// </summary>

        /// <param name="x"></param>

        /// <param name="y"></param>

        /// <returns></returns>

        public string GetAix(int x, int y)

        {

            char[] AChars = AList.ToCharArray();

            int i = x % 26;

            int j = x / 26;



            //if (x >= 26) { return ""; }

            string s = "";

            if (j > 0)

            {



                s = s + AChars[j - 1].ToString() + AChars[i].ToString();





            }

            else

            {

                s = s + AChars[x - 1].ToString();

            }

            //s = s + AChars[x - 1].ToString();

            s = s + y.ToString();

            return s;

        }



        /// <summary>

        /// 获取当前活动Sheet的Range的值

        /// </summary>

        /// <param name="y"></param>

        /// <param name="x"></param>

        /// <returns></returns>

        public string GetRangeText(int y, int x)

        {

            Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);

            return range.Text.ToString();

        }



        /// <summary>

        /// 给单元格赋值1

        /// </summary>

        /// <param name="x">行号</param>

        /// <param name="y">列号</param>

        /// <param name="align">对齐(CENTER、LEFT、RIGHT)</param>

        /// <param name="text">值</param>

        public void setValue(int y, int x, string align, string text)

        {

            Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);

            range.set_Value(miss, text);

            if (align.ToUpper() == "CENTER")

            {

                range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;

            }

            if (align.ToUpper() == "LEFT")

            {

                range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;

            }

            if (align.ToUpper() == "RIGHT")

            {

                range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;

            }

        }



        /// <summary>

        /// 给单元格赋值2

        /// </summary>

        /// <param name="x">行号</param>

        /// <param name="y">列号</param>

        /// <param name="text">值</param>

        public void setValue(int y, int x, string text)

        {

            Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);

            range.set_Value(miss, text);

        }



        /// <summary>

        /// 给单元格赋值3

        /// </summary>

        /// <param name="x">行号</param>

        /// <param name="y">列号</param>

        /// <param name="text">值</param>

        /// <param name="font">字符格式</param>

        /// <param name="color">颜色</param>

        public void setValue(int y, int x, string text, System.Drawing.Font font, System.Drawing.Color color)

        {

            this.setValue(x, y, text);

            Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);

            range.Font.Size = font.Size;

            range.Font.Bold = font.Bold;

            range.Font.Color = color;

            range.Font.Name = font.Name;

            range.Font.Italic = font.Italic;

            range.Font.Underline = font.Underline;

        }



        /// <summary>

        /// 给单元格赋值4

        /// </summary>

        /// <param name="x">行号</param>

        /// <param name="y">列号</param>

        /// <param name="text">值</param>

        /// <param name="font">字符格式</param>

        public void setValue(int y, int x, string text, float size)

        {

            this.setValue(x, y, text);

            Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);

            range.Font.Size = size;



        }



        //public void CopeTo(string fromSheetName,string startCell,string endCell,string ToSheetName)

        //{



        //    Microsoft.Office.Interop.Excel.Worksheet fromsheet = GetSheet(fromSheetName);

        //    Microsoft.Office.Interop.Excel.Worksheet tosheet = GetSheet(ToSheetName);

        //    Microsoft.Office.Interop.Excel.Range rangefrom = fromsheet.get_Range(startCell, endCell);

        //    Microsoft.Office.Interop.Excel.Range rangeto = tosheet.get_Range(startCell, endCell);

        //    //rangeto.Copy(rangefrom);

        //    tosheet.Paste(rangefrom, rangeto);

        //}



        /// <summary>

        /// 复制sheet

        /// 修正完成,重命名即可

        /// 

        /// </summary>

        /// <param name="fromSheetName"></param>

        /// <param name="ToSheetName"></param>

        /// <returns></returns>

        public void CopySheet(string fromSheetName, string ToSheetName)

        {

            Microsoft.Office.Interop.Excel.Worksheet fromsheet = GetSheet(fromSheetName);



            fromsheet.Copy(fromsheet, miss);



            ReNameSheet(fromSheetName + " (2)", ToSheetName);



        }

        /// <summary>

        /// 插入新行 将设定行拷贝,然后插入空行,再将设定行粘贴到新行上

        /// </summary>

        /// <param name="y">模板行号</param>

        public void insertRow(int y)

        {

            Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(GetAix(1, y), GetAix(25, y));

            range.Copy(miss);

            range.Insert(Microsoft.Office.Interop.Excel.XlDirection.xlDown, miss);

            range.get_Range(GetAix(1, y), GetAix(25, y));

            range.Select();

            sheet.Paste(miss, miss);



        }



        //public void insertCopyRow(int x1,int y1,int x2,int y2)

        //{

        //    Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(GetAix(1, y), GetAix(25, y));

        //    range.Copy(miss);

        //    range.Insert(Microsoft.Office.Interop.Excel.XlDirection.xlDown, miss);

        //    range.get_Range(GetAix(1, y), GetAix(25, y));

        //    range.Select();

        //    sheet.Paste(miss, miss);



        //}



        / <summary>

        / 把剪切内容粘贴到指定区域

        / </summary>

        public void past(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)

        {

            Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(GetAix(x1, y1), GetAix(x2, y2));

            range.Copy(miss);

            sheet.Paste(sheet.get_Range(this.GetAix(x3, y3), this.GetAix(x4, y4)), range);

        }



        /// <summary>

        /// 设置边框

        /// </summary>

        /// <param name="x1"></param>

        /// <param name="y1"></param>

        /// <param name="x2"></param>

        /// <param name="y2"></param>

        /// <param name="Width"></param>

        public void setBorder(int x1, int y1, int x2, int y2, int Width)

        {

            Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(x1, y1), this.GetAix(x2, y2));

            range.Borders.Weight = Width;

        }







        /// <summary>

        /// 合并单元格,并设置居中方式 测试有问题 修正

        /// </summary>

        /// <param name="x1"></param>

        /// <param name="y1"></param>

        /// <param name="x2"></param>

        /// <param name="y2"></param>

        /// <param name="align">居中方式:center,left,right</param>

        public void mergeCell(int x1, int y1, int x2, int y2, string align)

        {

            UniteCells(sheet, x1, y1, x2, y2);

            Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(x1, y1), this.GetAix(x2, y2));

            //range.Merge(true);

            if (align.ToUpper() == "CENTER")

            {

                range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;

            }

            if (align.ToUpper() == "LEFT")

            {

                range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;

            }

            if (align.ToUpper() == "RIGHT")

            {

                range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;

            }

        }

        /// <summary>

        /// 获取Range区域

        /// </summary>

        /// <param name="x1"></param>

        /// <param name="y1"></param>

        /// <param name="x2"></param>

        /// <param name="y2"></param>

        /// <returns></returns>

        public Microsoft.Office.Interop.Excel.Range getRange(int x1, int y1, int x2, int y2)

        {

            Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(x1, y1), this.GetAix(x2, y2));

            return range;

        }



        private object miss = Missing.Value; //忽略的参数OLENULL 

        private Microsoft.Office.Interop.Excel.Application m_objExcel;//Excel应用程序实例 

        private Microsoft.Office.Interop.Excel.Workbooks m_objBooks;//工作表集合 

        private Microsoft.Office.Interop.Excel.Workbook m_objBook;//当前操作的工作表 

        private Microsoft.Office.Interop.Excel.Worksheet sheet;//当前操作的表格 



        /// <summary>

        /// 活动工作Sheet

        /// </summary>

        public Microsoft.Office.Interop.Excel.Worksheet CurrentSheet

        {

            get

            {

                return sheet;

            }

            set

            {

                this.sheet = value;

            }

        }



        /// <summary>

        /// 获取活动WorkBooks

        /// </summary>

        public Microsoft.Office.Interop.Excel.Workbooks CurrentWorkBooks

        {

            get

            {

                return this.m_objBooks;

            }

            set

            {

                this.m_objBooks = value;

            }

        }



        /// <summary>

        /// 获取活动WorkBook

        /// </summary>

        public Microsoft.Office.Interop.Excel.Workbook CurrentWorkBook

        {

            get

            {

                return this.m_objBook;

            }

            set

            {

                this.m_objBook = value;

            }

        }



        /// <summary>

        /// 打开Excel文件

        /// </summary>

        /// <param name="filename">路径</param>

        public void OpenExcelFile(string filename)

        {

            UserControl(false);



            m_objExcel.Workbooks.Open(filename, miss, miss, miss, miss, miss, miss, miss,

                                    miss, miss, miss, miss, miss, miss, miss);



            m_objBooks = (Microsoft.Office.Interop.Excel.Workbooks)m_objExcel.Workbooks;



            m_objBook = m_objExcel.ActiveWorkbook;

            sheet = (Microsoft.Office.Interop.Excel.Worksheet)m_objBook.ActiveSheet;

        }



        public void UserControl(bool usercontrol)

        {

            if (m_objExcel == null) { return; }

            m_objExcel.UserControl = usercontrol;

            m_objExcel.DisplayAlerts = usercontrol;

            m_objExcel.Visible = usercontrol;

        }



        /// <summary>

        /// 创建Excel文件

        /// </summary>

        public void CreateExceFile()

        {

            UserControl(false);

            m_objBooks = (Microsoft.Office.Interop.Excel.Workbooks)m_objExcel.Workbooks;

            m_objBook = (Microsoft.Office.Interop.Excel.Workbook)(m_objBooks.Add(miss));

            sheet = (Microsoft.Office.Interop.Excel.Worksheet)m_objBook.ActiveSheet;

        }



        /// <summary>

        /// Excel文件另存为

        /// </summary>

        /// <param name="FileName"></param>

        public void SaveAs(string FileName)

        {



            m_objBook.SaveAs(FileName, miss, miss, miss, miss,

             miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,

             Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlLocalSessionChanges,

             miss, miss, miss, miss);

            //m_objBook.Close(false, miss, miss); 

        }



        /// <summary>

        /// 释放Excel文件

        /// </summary>

        public void ReleaseExcel()

        {

            m_objExcel.Quit();

            System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objExcel);

            System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objBooks);

            System.Runtime.InteropServices.Marshal.ReleaseComObject((object)m_objBook);

            System.Runtime.InteropServices.Marshal.ReleaseComObject((object)sheet);

            m_objExcel = null;

            m_objBooks = null;

            m_objBook = null;

            sheet = null;

            GC.Collect();

        }



        /

        public bool KillAllExcelApp()

        {

            try

            {

                if (m_objExcel != null) // isRunning是判断xlApp是怎么启动的flag.

                {

                    m_objExcel.Quit();

                    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);

                    //释放COM组件,其实就是将其引用计数减1

                    //System.Diagnostics.Process theProc;

                    foreach (System.Diagnostics.Process theProc in System.Diagnostics.Process.GetProcessesByName("EXCEL"))

                    {

                        //先关闭图形窗口。如果关闭失败...有的时候在状态里看不到图形窗口的excel了,

                        //但是在进程里仍然有EXCEL.EXE的进程存在,那么就需要杀掉它:p

                        if (theProc.CloseMainWindow() == false)

                        {

                            theProc.Kill();

                        }

                    }

                    m_objExcel = null;

                    return true;

                }

            }

            catch

            {

                return false;

            }

            return true;

        }

        /



        /// <summary>

        /// 获取一个工作表

        /// </summary>

        /// <param name="SheetName">Sheet名</param>

        /// <returns>Sheet对象</returns>

        public Microsoft.Office.Interop.Excel.Worksheet GetSheet(string SheetName)

        {

            Microsoft.Office.Interop.Excel.Worksheet s = (Microsoft.Office.Interop.Excel.Worksheet)m_objBook.Worksheets[SheetName];

            return s;

        }



        /// <summary>

        /// 添加一个工作表

        /// </summary>

        /// <param name="SheetName"></param>

        /// <returns></returns>

        public Microsoft.Office.Interop.Excel.Worksheet AddSheetWithReturn(string SheetName)

        {

            Microsoft.Office.Interop.Excel.Worksheet s = (Microsoft.Office.Interop.Excel.Worksheet)m_objBook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            s.Name = SheetName;

            return s;

        }



        /// <summary>

        /// 添加一个工作表

        /// </summary>

        public void AddSheet(string SheetName)

        {

            Microsoft.Office.Interop.Excel.Worksheet s = (Microsoft.Office.Interop.Excel.Worksheet)m_objBook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            s.Name = SheetName;



        }



        /// <summary>

        /// 删除一个工作表

        /// </summary>

        /// <param name="SheetName"></param>

        public void DelSheet(string SheetName)

        {

            ((Microsoft.Office.Interop.Excel.Worksheet)m_objBook.Worksheets[SheetName]).Delete();

        }



        /// <summary>

        /// 重命名工作表

        /// </summary>

        /// <param name="OldSheetName">原名</param>

        /// <param name="NewSheetName">新名</param>

        /// <returns></returns>

        public Microsoft.Office.Interop.Excel.Worksheet ReNameSheet(string OldSheetName, string NewSheetName)//重命名一个工作表一

        {

            Microsoft.Office.Interop.Excel.Worksheet s = (Microsoft.Office.Interop.Excel.Worksheet)m_objBook.Worksheets[OldSheetName];

            s.Name = NewSheetName;

            return s;

        }



        public Microsoft.Office.Interop.Excel.Worksheet ReNameSheet(Microsoft.Office.Interop.Excel.Worksheet Sheet, string NewSheetName)//重命名一个工作表二

        {



            Sheet.Name = NewSheetName;



            return Sheet;

        }





        /// <summary>

        /// 设置单元格值

        /// </summary>

        /// <param name="ws"></param>

        /// <param name="x"></param>

        /// <param name="y"></param>

        /// <param name="value"></param>

        public void SetCellValue(Microsoft.Office.Interop.Excel.Worksheet ws, int x, int y, object value)

        {

            ws.Cells[y, x] = value;

        }



        /// <summary>

        /// 设置单元格值

        /// </summary>

        /// <param name="ws">sheet名</param>

        /// <param name="x"></param>

        /// <param name="y"></param>

        /// <param name="value"></param>

        public void SetCellValue(string ws, int x, int y, object value)

        {



            GetSheet(ws).Cells[y, x] = value;

        }





        public void SetCellProperty(Microsoft.Office.Interop.Excel.Worksheet ws, int Startx, int Starty, int Endx, int Endy, int size, string name, Microsoft.Office.Interop.Excel.Constants color, Microsoft.Office.Interop.Excel.Constants HorizontalAlignment)

        //设置一个单元格的属性   字体,   大小,颜色   ,对齐方式

        {

            //name = "宋体";

            //size = 12;

            color = Microsoft.Office.Interop.Excel.Constants.xlAutomatic;

            HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlRight;

            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).Font.Name = name;

            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).Font.Size = size;

            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).Font.Color = color;

            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).HorizontalAlignment = HorizontalAlignment;

        }



        /// <summary>

        /// 设置单元格属性

        /// </summary>

        /// <param name="wsn">Sheet页名称</param>

        /// <param name="Startx">x1</param>

        /// <param name="Starty">y1</param>

        /// <param name="Endx">x2</param>

        /// <param name="Endy">y2</param>

        /// <param name="size">字体大小</param>

        /// <param name="name">字体名称</param>

        /// <param name="color">字体颜色</param>

        /// <param name="HorizontalAlignment">对齐方式</param>

        public void SetCellProperty(string wsn, int Startx, int Starty, int Endx, int Endy, int size, string name, Microsoft.Office.Interop.Excel.Constants color, Microsoft.Office.Interop.Excel.Constants HorizontalAlignment)

        {

            //name = "宋体";

            //size = 12;

            //color = Excel.Constants.xlAutomatic;

            //HorizontalAlignment = Excel.Constants.xlRight;





            Microsoft.Office.Interop.Excel.Worksheet ws = GetSheet(wsn);

            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).Font.Name = name;

            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).Font.Size = size;

            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).Font.Color = color;



            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).HorizontalAlignment = HorizontalAlignment;

        }



        /// <summary>

        /// 设置单元格属性

        /// </summary>

        /// <param name="wsn">Sheet页名称</param>

        /// <param name="Startx">x1</param>

        /// <param name="Starty">y1</param>

        /// <param name="Endx">x2</param>

        /// <param name="Endy">y2</param>

        /// <param name="size">字体大小</param>

        /// <param name="name">字体名称</param>

        /// <param name="color">字体颜色名称(系统预定义颜色)</param>

        /// <param name="HorizontalAlignment">对齐方式</param>

        public void SetCellProperty(string wsn, int Startx, int Starty, int Endx, int Endy, int size, string name, string colorName, string HorizontalAlignment)

        {

            //name = "宋体";

            //size = 12;

            //color = Excel.Constants.xlAutomatic;

            //HorizontalAlignment = Excel.Constants.xlRight;





            Microsoft.Office.Interop.Excel.Worksheet ws = GetSheet(wsn);

            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).Font.Name = name;

            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).Font.Size = size;



            Color color = Color.FromName(colorName);

            color = Color.FromArgb(color.B, color.G, color.R);



            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).Font.Color = color.ToArgb();



            if (HorizontalAlignment.ToUpper() == "CENTER")

            {



                ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; ;

            }

            if (HorizontalAlignment.ToUpper() == "LEFT")

            {

                ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;

            }

            if (HorizontalAlignment.ToUpper() == "RIGHT")

            {

                ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;

            }



        }



        /// <summary>

        /// 设置单元格底色

        /// </summary>

        /// <param name="wsn">sheet页名称</param>

        /// <param name="Startx">x1</param>

        /// <param name="Starty">y1</param>

        /// <param name="Endx">x2</param>

        /// <param name="Endy">y2</param>

        /// <param name="colorName">系统颜色名称</param>

        public void SetBorderColor(string wsn, int Startx, int Starty, int Endx, int Endy, string colorName)

        {

            Color color = Color.FromName(colorName);

            color = Color.FromArgb(color.B, color.G, color.R);

            Microsoft.Office.Interop.Excel.Worksheet ws = GetSheet(wsn);

            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).Cells.Interior.Color = color.ToArgb();

            ws.get_Range(ws.Cells[Starty, Startx], ws.Cells[Endy, Endx]).Cells.Interior.Pattern = Microsoft.Office.Interop.Excel.XlBackground.xlBackgroundAutomatic;



        }



        //合并单元格 测试ok

        public void UniteCells(Microsoft.Office.Interop.Excel.Worksheet ws, int x1, int y1, int x2, int y2)

        {

            ws.get_Range(ws.Cells[y1, x1], ws.Cells[y2, x2]).Merge(Type.Missing);

        }



        //合并单元格 测试ok

        public void UniteCells(string ws, int x1, int y1, int x2, int y2)

        {

            GetSheet(ws).get_Range(GetSheet(ws).Cells[y1, x1], GetSheet(ws).Cells[y2, x2]).Merge(Type.Missing);



        }



        //将内存中数据表格插入到Excel指定工作表的指定位置 为在使用模板时控制格式时使用一

        public void InsertTable(System.Data.DataTable dt, string ws, int startX, int startY)

        {



            for (int i = 0; i < dt.Rows.Count; i++)

            {

                for (int j = 0; j < dt.Columns.Count; j++)

                {

                    GetSheet(ws).Cells[startY + i, j + startX] = dt.Rows[i][j].ToString();



                }



            }



        }



        //将内存中数据表格插入到Excel指定工作表的指定位置二

        public void InsertTable(System.Data.DataTable dt, Microsoft.Office.Interop.Excel.Worksheet ws, int startX, int startY)

        {

            for (int i = 0; i < dt.Rows.Count; i++)

            {

                for (int j = 0; j < dt.Columns.Count; j++)

                {



                    ws.Cells[startY + i, j + startX] = dt.Rows[i][j];



                }



            }



        }



        //插入图片操作一

        public void InsertPictures(string Filename, string ws, int x, int y, int wight, int lenth)

        {

            //后面的数字表示位置

            GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, x, y, wight, lenth);



        }



        //public void InsertPictures(string Filename, string ws, int Height, int Width)

        //插入图片操作二

        //{

        //    GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150);

        //    GetSheet(ws).Shapes.get_Range(Type.Missing).Height = Height;

        //    GetSheet(ws).Shapes.get_Range(Type.Missing).Width = Width;

        //}

        //public void InsertPictures(string Filename, string ws, int left, int top, int Height, int Width)

        //插入图片操作三

        //{



        //    GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150);

        //    GetSheet(ws).Shapes.get_Range(Type.Missing).IncrementLeft(left);

        //    GetSheet(ws).Shapes.get_Range(Type.Missing).IncrementTop(top);

        //    GetSheet(ws).Shapes.get_Range(Type.Missing).Height = Height;

        //    GetSheet(ws).Shapes.get_Range(Type.Missing).Width = Width;

        //}



    }

}
修正了原来只有26列的问题,现在列数可以与Excel ZZ列兼容
添加sheet复制方法,可以创建一个sheet作为模板,通过CopySheet方法复制sheet模板,在一个报表内分sheet生成报表。
修改insert及past方法,方便动态添加表格行。
修正mergeCell方法,合并新插入的行的标题
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值