• C#操作EXCEL类


    using System;
    using Microsoft.Office.Interop.Excel;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using MySql.Data.Common;
    using MySql.Data.MySqlClient;
    using MySql.Data.Types;
    using System.Data.Common;
     
        /// <summary>
        /// excel 2003 helper
        /// </summary>
        public sealed class ExcelHelper : IDisposable
        {
            public static readonly object Missing = Type.Missing;
            public string FileName { get; set; }
            public Application App { get; set; }
            public Workbooks Wbs { get; set; }
            public Workbook Wb { get; set; }
            public Worksheets Wss { get; set; }
            public Worksheet Ws { get; set; }
            public Range Rng { get; set; }
            //宋吉峰使用EXCEL变量定义开始
            public Microsoft.Office.Interop.Excel.Application excelApp = null;
            public Microsoft.Office.Interop.Excel.Workbook book = null;
            public Microsoft.Office.Interop.Excel.Worksheet sheet = null;
            public Microsoft.Office.Interop.Excel.Range range = null;
            public String Input_StrArr = "";
            //宋吉峰使用EXCEL变量定义结束

            public ExcelHelper()
            {
            }

            /// <summary>
            /// 创建一个Excel对象
            /// </summary>
            public void Create()
            {
                App = new Application() { Visible = false };
                Wbs = App.Workbooks;
                Wb = Wbs.Add(Missing);
            }

            /// <summary>
            /// //打开一个Excel文件
            /// </summary>
            /// <param name="fileName"></param>
            public void Open(string fileName)
            {
                App = new Application();
                Wbs = App.Workbooks;
                Wb = Wbs.Add(fileName);
                FileName = fileName;
            }

            /// <summary>
            /// 获取一个工作表
            /// </summary>
            /// <param name="sheetName"></param>
            /// <returns></returns>
            public Worksheet GetSheet(string sheetName)
            {
                return (Worksheet)Wb.Worksheets[sheetName];
            }

            public Worksheet GetSheet(int i)
            {
                return (Worksheet)Wb.Worksheets[i];
            }

            /// <summary>
            /// 添加一个工作表
            /// </summary>
            /// <param name="sheetName"></param>
            /// <returns></returns>
            public Worksheet AddSheet(string sheetName)
            {
                var s = (Worksheet)Wb.Worksheets.Add(Missing, Missing, Missing, Missing);
                s.Name = sheetName;
                return s;
            }

            /// <summary>
            /// 删除一个工作表
            /// </summary>
            /// <param name="sheetName"></param>
            public void DeleteSheet(string sheetName)
            {
                ((Worksheet)Wb.Worksheets[sheetName]).Delete();
            }

            /// <summary>
            /// 重命名一个工作表
            /// </summary>
            /// <param name="oldSheetName"></param>
            /// <param name="newSheetName"></param>
            /// <returns></returns>
            public Worksheet ReNameSheet(string oldSheetName, string newSheetName)
            {
                var s = (Worksheet)Wb.Worksheets[oldSheetName];
                s.Name = newSheetName;
                return s;
            }

            /// <summary>
            /// 重命名一个工作表
            /// </summary>
            /// <param name="sheet"></param>
            /// <param name="newSheetName"></param>
            /// <returns></returns>
            public Worksheet ReNameSheet(Worksheet sheet, string newSheetName)
            {
                sheet.Name = newSheetName;
                return sheet;
            }

            /// <summary>
            /// 设定单元格的值[Text]
            /// </summary>
            /// <param name="ws">要设值的工作表</param>
            /// <param name="x">X行</param>
            /// <param name="y">Y列</param>
            /// <param name="value">值</param>
            public Range SetCellValue(Worksheet ws, int x, int y, object value)
            {
                ((Range)ws.Cells[x, y]).Value2 = value;
                return (Range)ws.Cells[x, y];
            }

            /// <summary>
            /// 设定单元格的值[Text]
            /// </summary>
            /// <param name="sheetName">要设值的工作表的名称</param>
            /// <param name="x">X行</param>
            /// <param name="y">Y列</param>
            /// <param name="value">值</param>
            public Range SetCellValue(string sheetName, int x, int y, object value)
            {
                ((Range)GetSheet(sheetName).Cells[x, y]).Value2 = value;
                return (Range)GetSheet(sheetName).Cells[x, y];
            }

            /// <summary>
            /// 合并单元格
            /// </summary>
            /// <param name="ws"></param>
            /// <param name="x1"></param>
            /// <param name="y1"></param>
            /// <param name="x2"></param>
            /// <param name="y2"></param>
            public void MergeCells(Worksheet ws, int x1, int y1, int x2, int y2)
            {
                ws.get_Range(ws.Cells[x1, y1], ws.Cells[x2, y2]).Merge(Missing);
            }

            /// <summary>
            /// //合并单元格
            /// </summary>
            /// <param name="sheetName"></param>
            /// <param name="x1"></param>
            /// <param name="y1"></param>
            /// <param name="x2"></param>
            /// <param name="y2"></param>
            public void MergeCells(string sheetName, int x1, int y1, int x2, int y2)
            {
                GetSheet(sheetName).get_Range(GetSheet(sheetName).Cells[x1, y1], GetSheet(sheetName).Cells[x2, y2]).Merge(Missing);
            }

            /// <summary>
            /// 保存文档
            /// </summary>
            public void Save()
            {
                Wb.Save();
            }

            /// <summary>
            /// 文档另存为
            /// </summary>
            /// <param name="fileName"></param>
            public void SaveAs(string fileName)
            {
                Wb.SaveAs(fileName, XlFileFormat.xlWorkbookNormal,
                          Missing, Missing, Missing, Missing,
                          XlSaveAsAccessMode.xlNoChange,
                          Missing, Missing, Missing, Missing, Missing);
            }

            /// <summary>
            /// 关闭一个Excel对象,销毁对象
            /// </summary>
            public void Close()
            {
                // 明确的释放非托管的COM资源,调用Marshal.FinalReleaseComObject对所有的访问其对象.
                #region
                if (Rng != null)
                {
                    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(Rng);
                    Rng = null;
                }

                if (Ws != null)
                {
                    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(Ws);
                    Ws = null;
                }

                if (Wb != null)
                {
                    if (App != null && App.DisplayAlerts)
                    {
                        App.DisplayAlerts = false;
                    }
                    Wb.Close(Missing, Missing, Missing);
                    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(Wb);
                    Wb = null;
                }

                if (Wbs != null)
                {
                    if (App != null && App.DisplayAlerts)
                    {
                        App.DisplayAlerts = false;
                    }
                    Wbs.Close();
                    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(Wbs);
                    Wbs = null;
                }

                if (App != null)
                {
                    if (App.DisplayAlerts)
                    {
                        App.DisplayAlerts = false;
                    }

                    //当Excel或通过程序调用启动,并且Application.Visible = false时,Application.UserControl 的值是false。 
                    //如果UserControl为false,且还有未完成的调用时,Excel进程将会继续保留。 
                    //可以设置UserControl为true,强迫Quit方法调用时,应用程序被终止,而不管未完成的调用。 
                    App.UserControl = true;
                    App.Quit();

                    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(App);
                    App = null;
                }
                #endregion

                #region GC
                // Clean up the unmanaged Excel COM resources by forcing a garbage
                // collection as soon as the calling function is off the stack (at
                // which point these objects are no longer rooted).
                GC.Collect();
                GC.WaitForPendingFinalizers();

                // GC needs to be called twice in order to get the Finalizers called
                // - the first time in, it simply makes a list of what is to be
                // finalized, the second time in, it actually is finalizing. Only
                // then will the object do its automatic ReleaseComObject.
                GC.Collect();
                GC.WaitForPendingFinalizers();
                #endregion

            }

            public void Dispose()
            {
                Close();
            }
            /*****************************************************************************************
             *
             * 宋吉峰添加EXCEL操作函数开始
             *
             * ***************************************************************************************/
            /// <summary>
            /// 将数据写入Excel
            /// </summary>
            /// <param name="data">要写入的字符串</param>
            /// <param name="starRow">写入的行</param>
            /// <param name="startColumn">写入的列</param>
            public void WriteData(string data, Int64 row, int column)
            { 
                sheet.Cells[row, column] = data;

            }
            /// 读取指定单元格数据
            /// </summary>
            /// <param name="row">行序号</param>
            /// <param name="column">列序号</param>
            /// <returns>该格的数据</returns>
            public string ReadData(Int64 row, int column)
            {
                Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(sheet.Cells[row, column], sheet.Cells[row, column]);
                return range.Text.ToString();
            }
            /// <summary>
            /// 填充EXCEL内容函数
            /// </summary>
            /// <param name="fileName">EXCEL文件路径</param>
            /// <param name="str_Arr">填充内容以","(半角)为分割符号例如: 侧耳,水电厂,友,中小学,大</param>
            public String ExcelWriteData(string fileName, string str_Arr)
            {
                excelApp = new Microsoft.Office.Interop.Excel.Application();
                excelApp.Visible = false;   //若为true,删除瞬间可以看见 office excel界面
                //打开excel文件
                book = excelApp.Workbooks.Add(fileName);
                //获取sheet1
                sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.Worksheets[1];
                //获取编辑范围
                // str = ReadData(3, 4);// sheet.Cells[3, 4].ToString();
                string[] Str_Arr;

                if (str_Arr.Length > 0)
                {
                    Str_Arr = str_Arr.Split(',');
                }
                else
                {
                    Str_Arr = Input_StrArr.Split(',');
                }
                //"第一个填充" //产品品番
                if (Str_Arr.Length > 0)
                {
                    WriteData(Str_Arr[0], 4, 3);
                }
                else
                {
                    WriteData("", 4, 3);
                }
                //"第2个填充" //产品品名
                if (Str_Arr.Length > 1)
                {
                    WriteData(Str_Arr[1], 6, 3);
                }
                else
                {
                    WriteData("", 6, 3);
                }
                //"第3个填充" //式样规格
                if (Str_Arr.Length > 2)
                {
                    WriteData(Str_Arr[2], 8, 3);
                }
                else
                {
                    WriteData("", 8, 3);
                }
                //"第4个填充"  //投入数量
                if (Str_Arr.Length > 3)
                {
                    WriteData(Str_Arr[3], 11, 5);
                }
                else
                {
                    WriteData("", 11, 5);
                }
                //"第5个填充" //批量号
                if (Str_Arr.Length > 4)
                {
                    WriteData(Str_Arr[4], 4, 12);
                }
                else
                {
                    WriteData("", 4, 12);
                }
                //"第6个填充" //原始批量号
                if (Str_Arr.Length > 6)
                {
                    WriteData(Str_Arr[6], 6, 12);
                }
                else
                {
                    WriteData("", 6, 12);
                }
                ////"第7个填充" //作业手顺
                //if (Str_Arr.Length > 6)
                //{
                //    WriteData(Str_Arr[6], 8, 12);
                //}
                //获取sheet2
                sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.Worksheets[2];
                //获取编辑范围
                // str = ReadData(3, 4);// sheet.Cells[3, 4].ToString();

                //"第一个填充" //产品品番
                if (Str_Arr.Length > 0)
                {
                    WriteData(Str_Arr[0], 4, 3);
                }
                else
                {
                    WriteData("", 4, 3);
                }
                //"第2个填充" //产品品名
                if (Str_Arr.Length > 1)
                {
                    WriteData(Str_Arr[1], 6, 3);
                }
                else
                {
                    WriteData("", 6, 3);
                }
                //"第3个填充" //式样规格
                if (Str_Arr.Length > 2)
                {
                    WriteData(Str_Arr[2], 8, 3);
                }
                else
                {
                    WriteData("", 8, 3);
                }
                //"第4个填充"  //投入数量
                if (Str_Arr.Length > 3)
                {
                    WriteData(Str_Arr[3], 11, 5);
                }
                else
                {
                    WriteData("", 11, 5);
                }
                //"第5个填充" //批量号
                if (Str_Arr.Length > 4)
                {
                    WriteData(Str_Arr[4], 4, 12);
                }
                else
                {
                    WriteData("", 4, 12);
                }
                //"第6个填充" //原始批量号
                if (Str_Arr.Length > 5)
                {
                    WriteData(Str_Arr[5], 6, 12);
                }
                else
                {
                    WriteData("", 6, 12);
                }
                //"第7个填充" //作业手顺
                if (Str_Arr.Length > 6)
                {
                    WriteData(Str_Arr[6], 8, 12);
                }
                else
                {
                    WriteData("", 8, 12);
                }
                string str = "";
                string s = System.DateTime.Now.Date.Year.ToString() + "-" + System.DateTime.Now.Date.Month.ToString() + "-" + System.DateTime.Now.Date.Day.ToString() + "-" + System.DateTime.Now.Date.Hour.ToString() + "-" + System.DateTime.Now.Date.Minute.ToString() + "-" + System.DateTime.Now.Second.ToString() + "-" + System.DateTime.Now.Millisecond.ToString();
                s = s + ".xls";
                str = fileName.ToString().ToLower().Replace(".xls", s);
                //保存编辑
                // SaveAs();
                book.SaveAs(str, XlFileFormat.xlWorkbookNormal,
                          Missing, Missing, Missing, Missing,
                          XlSaveAsAccessMode.xlNoChange,
                          Missing, Missing, Missing, Missing, Missing);
                //关闭book
                book.Close(Missing, Missing, Missing);
                //退出excel application,可以将前面的excelApp.Visible = false改为excelApp.Visible = true看看;
                excelApp.Workbooks.Close();
                excelApp.Quit();
                return str;
            }
            public void ExcelWritePrintData(string fileName, string str_Arr)
            {
                excelApp = new Microsoft.Office.Interop.Excel.Application();
                excelApp.Visible = false;   //若为true,删除瞬间可以看见 office excel界面
                //打开excel文件
                book = excelApp.Workbooks.Add(fileName);
                //获取sheet1
                sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.Worksheets[1];
                //获取编辑范围
                // str = ReadData(3, 4);// sheet.Cells[3, 4].ToString();
                string[] Str_Arr;

                if (str_Arr.Length > 0)
                {
                    Str_Arr = str_Arr.Split(',');
                }
                else
                {
                    Str_Arr = Input_StrArr.Split(',');
                }
                //"第一个填充" //产品品番
                if (Str_Arr.Length > 0)
                {
                    WriteData(Str_Arr[0], 4, 3);
                }
                else
                {
                    WriteData("", 4, 3);
                }
                //"第2个填充" //产品品名
                if (Str_Arr.Length > 1)
                {
                    WriteData(Str_Arr[1], 6, 3);
                }
                else
                {
                    WriteData("", 6, 3);
                }
                //"第3个填充" //式样规格
                if (Str_Arr.Length > 2)
                {
                    WriteData(Str_Arr[2], 8, 3);
                }
                else
                {
                    WriteData("", 8, 3);
                }
                //"第4个填充"  //投入数量
                if (Str_Arr.Length > 3)
                {
                    WriteData(Str_Arr[3], 11, 5);
                }
                else
                {
                    WriteData("", 11, 5);
                }
                //"第5个填充" //批量号
                if (Str_Arr.Length > 4)
                {
                    WriteData(Str_Arr[4], 4, 12);
                }
                else
                {
                    WriteData("", 4, 12);
                }
                //"第6个填充" //原始批量号
                if (Str_Arr.Length > 6)
                {
                    WriteData(Str_Arr[6], 6, 12);
                }
                else
                {
                    WriteData("", 6, 12);
                }
                ////"第7个填充" //作业手顺
                //if (Str_Arr.Length > 6)
                //{
                //    WriteData(Str_Arr[6], 8, 12);
                //}
                //获取sheet2
                //sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.Worksheets[2];
                ////获取编辑范围
                //// str = ReadData(3, 4);// sheet.Cells[3, 4].ToString();

                ////"第一个填充" //产品品番
                //if (Str_Arr.Length > 0)
                //{
                //    WriteData(Str_Arr[0], 4, 3);
                //}
                //else
                //{
                //    WriteData("", 4, 3);
                //}
                ////"第2个填充" //产品品名
                //if (Str_Arr.Length > 1)
                //{
                //    WriteData(Str_Arr[1], 6, 3);
                //}
                //else
                //{
                //    WriteData("", 6, 3);
                //}
                ////"第3个填充" //式样规格
                //if (Str_Arr.Length > 2)
                //{
                //    WriteData(Str_Arr[2], 8, 3);
                //}
                //else
                //{
                //    WriteData("", 8, 3);
                //}
                ////"第4个填充"  //投入数量
                //if (Str_Arr.Length > 3)
                //{
                //    WriteData(Str_Arr[3], 11, 5);
                //}
                //else
                //{
                //    WriteData("", 11, 5);
                //}
                ////"第5个填充" //批量号
                //if (Str_Arr.Length > 4)
                //{
                //    WriteData(Str_Arr[4], 4, 12);
                //}
                //else
                //{
                //    WriteData("", 4, 12);
                //}
                ////"第6个填充" //原始批量号
                //if (Str_Arr.Length > 5)
                //{
                //    WriteData(Str_Arr[5], 6, 12);
                //}
                //else
                //{
                //    WriteData("", 6, 12);
                //}
                ////"第7个填充" //作业手顺
                //if (Str_Arr.Length > 6)
                //{
                //    WriteData(Str_Arr[6], 8, 12);
                //}
                //else
                //{
                //    WriteData("", 8, 12);
                //}
                string str = "";
                string s = System.DateTime.Now.Date.Year.ToString() + "-" + System.DateTime.Now.Date.Month.ToString() + "-" + System.DateTime.Now.Date.Day.ToString() + "-" + System.DateTime.Now.Date.Hour.ToString() + "-" + System.DateTime.Now.Date.Minute.ToString() + "-" + System.DateTime.Now.Second.ToString() + "-" + System.DateTime.Now.Millisecond.ToString();
                s = s + ".xls";
                str = fileName.ToString().ToLower().Replace(".xls", s);
                //保存编辑
                // SaveAs();
                book.SaveAs(str, XlFileFormat.xlWorkbookNormal,
                          Missing, Missing, Missing, Missing,
                          XlSaveAsAccessMode.xlNoChange,
                          Missing, Missing, Missing, Missing, Missing);
                //关闭book
                book.Close(Missing, Missing, Missing);
                //退出excel application,可以将前面的excelApp.Visible = false改为excelApp.Visible = true看看;
                excelApp.Workbooks.Close();
                excelApp.Quit();
                ExcelPrint(str);
            }
            /// <summary>
            /// 通过文件路径和XLS文件中SHEET的索引来打印EXCEL的SHEET文档
            /// </summary>
            /// <param name="strFilePath">XLS文件路径</param>
            /// <param name="SheetIndex">XLS文件中SHEET的索引</param>
            public void ExcelPrint(string strFilePath, int SheetIndex)
            {
                Microsoft.Office.Interop.Excel.ApplicationClass xlApp = new ApplicationClass();
                Microsoft.Office.Interop.Excel.Workbooks xlWorkbooks;
                Microsoft.Office.Interop.Excel.Workbook xlWorkbook;
                Microsoft.Office.Interop.Excel.Worksheet xlWorksheet;
                System.Type tyWorkbooks;
                System.Reflection.MethodInfo[] methods;
                object objFilePath;

                object oMissing = System.Reflection.Missing.Value;
                //strFilePath = Server.MapPath(strFilePath);
                if (!System.IO.File.Exists(strFilePath))
                {
                    throw new System.IO.FileNotFoundException();
                    return;
                }
                try
                {
                    xlApp.Visible = true;
                    xlWorkbooks = xlApp.Workbooks;
                    tyWorkbooks = xlWorkbooks.GetType();
                    methods = tyWorkbooks.GetMethods();
                    objFilePath = strFilePath;
                    object Nothing = System.Reflection.Missing.Value;
                    xlWorkbook = xlApp.Workbooks.Open(strFilePath, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing);
                    xlWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkbook.Worksheets[SheetIndex];

                    xlWorksheet.PrintPreview(true);
                    xlWorkbook.Close(oMissing, oMissing, oMissing);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (xlApp != null)
                    {
                        xlApp.Quit();
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
                        xlApp = null;
                    }
                    GC.Collect();
                }
            }
            /// <summary>
            /// 打印EXCEL中所有SHEET
            /// </summary>
            /// <param name="strFilePath">EXCEL文件路径</param>
            public void ExcelPrint(string strFilePath)
            {
                int SheetIndex;
                SheetIndex = 1;
                Microsoft.Office.Interop.Excel.ApplicationClass xlApp = new ApplicationClass();
                Microsoft.Office.Interop.Excel.Workbooks xlWorkbooks;
                Microsoft.Office.Interop.Excel.Workbook xlWorkbook;
                Microsoft.Office.Interop.Excel.Worksheet xlWorksheet;
                System.Type tyWorkbooks;
                System.Reflection.MethodInfo[] methods;
                object objFilePath;

                object oMissing = System.Reflection.Missing.Value;
                //strFilePath = Server.MapPath(strFilePath);
                if (!System.IO.File.Exists(strFilePath))
                {
                    throw new System.IO.FileNotFoundException();
                    return;
                }
                try
                {
                    xlApp.Visible = true;
                    xlWorkbooks = xlApp.Workbooks;
                    tyWorkbooks = xlWorkbooks.GetType();
                    methods = tyWorkbooks.GetMethods();
                    objFilePath = strFilePath;
                    object Nothing = System.Reflection.Missing.Value;
                    xlWorkbook = xlApp.Workbooks.Open(strFilePath, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing);

                    for (SheetIndex = 0; SheetIndex < xlWorkbook.Sheets.Count; SheetIndex++)
                    {
                        xlWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkbook.Worksheets[SheetIndex + 1];

                        xlWorksheet.PrintPreview(true);
                    }
                    xlWorkbook.Close(oMissing, oMissing, oMissing);

                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (xlApp != null)
                    {
                        xlApp.Quit();
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
                        xlApp = null;
                    }
                    GC.Collect();
                }
            }
            public void ExcelPrint_pdf(string strFilePath)
            {
                int SheetIndex;
                SheetIndex = 1;
                Microsoft.Office.Interop.Excel.ApplicationClass xlApp = new ApplicationClass();
                Microsoft.Office.Interop.Excel.Workbooks xlWorkbooks;
                Microsoft.Office.Interop.Excel.Workbook xlWorkbook;
                Microsoft.Office.Interop.Excel.Worksheet xlWorksheet;
                System.Type tyWorkbooks;
                System.Reflection.MethodInfo[] methods;
                object objFilePath;

                object oMissing = System.Reflection.Missing.Value;
                //strFilePath = Server.MapPath(strFilePath);
                if (!System.IO.File.Exists(strFilePath))
                {
                    throw new System.IO.FileNotFoundException();
                    return;
                }
                try
                {
                    xlApp.Visible = true;
                    xlWorkbooks = xlApp.Workbooks;
                    tyWorkbooks = xlWorkbooks.GetType();
                    methods = tyWorkbooks.GetMethods();
                    objFilePath = strFilePath;
                    object Nothing = System.Reflection.Missing.Value;
                    xlWorkbook = xlApp.Workbooks.Open(strFilePath, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing);

                    for (SheetIndex = 0; SheetIndex < xlWorkbook.Sheets.Count; SheetIndex++)
                    {
                        xlWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkbook.Worksheets[SheetIndex + 1];
                        xlWorksheet.PrintOut(1, 1, false, false, "Acrobat Distiller", true, false, strFilePath.ToString().ToLower().Replace(".xls",(SheetIndex.ToString()+".pdf")));
                        //xlWorksheet.PrintPreview(true);
                    }
                    xlWorkbook.Close(oMissing, oMissing, oMissing);

                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (xlApp != null)
                    {
                        xlApp.Quit();
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
                        xlApp = null;
                    }
                    GC.Collect();
                }
            }
            /*****************************************************************************************
            *
            * 宋吉峰添加EXCEL操作函数结束
            *
            * ***************************************************************************************/

            public String ExcelWriteData_C(string fileName)
            {
                string ColumsIndex = "";
                string RowIndex = "";
                String letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                excelApp = new Microsoft.Office.Interop.Excel.Application();
                excelApp.Visible = false;   //若为true,删除瞬间可以看见 office excel界面
                //打开excel文件
                book = excelApp.Workbooks.Add(fileName);
                //获取sheet1
                sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.Worksheets[1];
                //获取编辑范围
                // str = ReadData(3, 4);// sheet.Cells[3, 4].ToString();
                string str = "SELECT  TABLE_SCHEMA,COLUMN_NAME,concat(TABLE_NAME,'.',COLUMN_NAME) as columnss  FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE  where TABLE_SCHEMA='mts2' and column_name<>'CO_CODE'";
                System.Data.DataTable dt = new System.Data.DataTable();
                MYSQL_SQLDB SQLDB = new MYSQL_SQLDB();
                Int64 bigno = 0;
                WriteData("数据库名:MTS2", 1, 1);
                range = (Range)sheet.get_Range("A1", "A1");
                range.Cells.Interior.Color = System.Drawing.Color.FromArgb(0,255,255).ToArgb();
                bigno = 1;
                //数据填充开始
                str = "show tables";
                dt = SQLDB.Get_DataTable_By_ExecuteSQL(str);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    bigno = bigno + 3;
                    WriteData("表名:",bigno, 1);
                    WriteData(dt.Rows[i][0].ToString(), bigno, 2);
                    ColumsIndex = "B" + bigno.ToString();
                    range = (Range)sheet.get_Range(ColumsIndex, ColumsIndex);
                    range.Cells.Interior.Color = System.Drawing.Color.FromArgb(0, 255, 255).ToArgb();
                    System.Data.DataTable dt_Keywords = new System.Data.DataTable();
                    str = "SELECT  TABLE_SCHEMA,COLUMN_NAME,concat(TABLE_NAME,'.',COLUMN_NAME) as columnss  FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE  where TABLE_SCHEMA='mts2' and column_name<>'CO_CODE' and TABLE_NAME='" + dt.Rows[i][0].ToString() + "'";
                    dt_Keywords = SQLDB.Get_DataTable_By_ExecuteSQL(str);
                   // Response.Write("<BR>**************************************************************************************<BR>");
                   // Response.Write("<BR>表KeyWords名称:<BR>");
                   // Response.Write("<BR>**************************************************************************************<BR>");
                    bigno=bigno+2;
                    WriteData("关键字:", bigno, 1);
                    ColumsIndex = "B" + bigno.ToString();
                    range = (Range)sheet.get_Range(ColumsIndex, ColumsIndex);
                    range.Cells.Interior.Color = System.Drawing.Color.FromArgb(0, 255, 255).ToArgb();
                  
                    for (int j = 0; j < dt_Keywords.Rows.Count; j++)
                    {
                       // Response.Write("<BR>KeyWords  Name:<BR>" + dt_Keywords.Rows[j]["COLUMN_NAME"].ToString());
                        bigno = bigno + 1;
                        WriteData(dt_Keywords.Rows[j]["COLUMN_NAME"].ToString(), bigno, 2);
                        ColumsIndex = "B"+bigno.ToString();
                        range.WrapText = true;
                        range = (Range)sheet.get_Range(ColumsIndex, ColumsIndex);
                        //range.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
                        range.Font.Color = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
                        System.Data.DataTable dt_Table_Related = new System.Data.DataTable();
                        str = "SELECT  TABLE_SCHEMA,COLUMN_NAME, TABLE_NAME   FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE  where TABLE_SCHEMA='mts2' and column_name<>'CO_CODE' and column_name='" + dt_Keywords.Rows[j]["COLUMN_NAME"].ToString() + "'";
                         dt_Table_Related.Clear();
                        dt_Table_Related = SQLDB.Get_DataTable_By_ExecuteSQL(str);
                        //Response.Write("<BR>Related_Table:");
                     
                        bigno = bigno + 1;
                        WriteData("相关表名:", bigno, 2);
                        ColumsIndex = "B" + bigno.ToString();
                        range = (Range)sheet.get_Range(ColumsIndex, ColumsIndex);
                        range.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 0, 255).ToArgb();
                        range.WrapText = true;
                        //range.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
                        range.Font.Color = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
                        WriteData("链接条件:", bigno+1, 2);
                        ColumsIndex = "B" + (bigno+1).ToString();
                        range = (Range)sheet.get_Range(ColumsIndex, ColumsIndex);
                        range.WrapText = true;
                        range.Cells.Interior.Color = System.Drawing.Color.FromArgb(255,0,  255).ToArgb();
                        //range.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
                        range.Font.Color = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
                      
                   int k = 0;
                        for ( k = 0; k < dt_Table_Related.Rows.Count; k++)
                        {
                            WriteData(dt_Table_Related.Rows[k]["table_name"].ToString(), bigno, 3 + k);
                            ColumsIndex = letter.Substring(3 + k, 1) + (bigno ).ToString();
                            range = (Range)sheet.get_Range(ColumsIndex, ColumsIndex);
                            range.WrapText = true;
                            range.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 0, 255).ToArgb();
                            range.Font.Color = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();

                            range.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThick, XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb());

                            string ss =dt.Rows[i][0].ToString()+"."+dt_Keywords.Rows[j]["COLUMN_NAME"].ToString()+"="+dt_Table_Related.Rows[k]["table_name"].ToString() + "." + dt_Table_Related.Rows[k]["COLUMN_NAME"].ToString();
                            WriteData(ss, bigno + 1, 3 + k);
                            ColumsIndex = letter.Substring(3+k,1) + (bigno + 1).ToString();
                            range = (Range)sheet.get_Range(ColumsIndex, ColumsIndex);
                            range.WrapText = true;
                            range.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 0, 255).ToArgb();
                            range.Font.Color = System.Drawing.Color.FromArgb(255,0, 0 ).ToArgb();
                            range.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThick, XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb());
                            // Response.Write(dt_Table_Related.Rows[k]["table_name"].ToString() + ",");
                        }
                        if (k == 0)
                        {
                            WriteData("无关键字", bigno, 3);
                        }
                        else
                        {
                            bigno = bigno + 1;
                        }
                    }
                   // Response.Write("<BR>**************************************************************************************<BR>");
                    System.Data.DataTable dt_Table_colunms_name = new System.Data.DataTable();
                    str = "show columns from " + dt.Rows[i][0].ToString() + "  from MTS2 ";
                    dt_Table_colunms_name.Clear();
                    dt_Table_colunms_name = SQLDB.Get_DataTable_By_ExecuteSQL(str);
                    bigno = bigno + 2;
                    WriteData("字段名称", bigno, 1);
                    ColumsIndex = "A" + bigno.ToString();
                    range = (Range)sheet.get_Range(ColumsIndex, ColumsIndex);
                    range.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 255, 0).ToArgb();
            
                    WriteData("字段类型", bigno, 2);
                    ColumsIndex = "B" + bigno.ToString();
                    range = (Range)sheet.get_Range(ColumsIndex, ColumsIndex);
                    range.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 255, 0).ToArgb();
                    WriteData("是否可为空", bigno, 3);
                    ColumsIndex = "C" + bigno.ToString();
                    range = (Range)sheet.get_Range(ColumsIndex, ColumsIndex);
                    range.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 255, 0).ToArgb();
                    WriteData("是否为关键值", bigno, 4);
                    ColumsIndex = "D" + bigno.ToString();
                    range = (Range)sheet.get_Range(ColumsIndex, ColumsIndex);
                    range.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 255, 0).ToArgb();
                    WriteData("默认值", bigno, 5);
                    ColumsIndex = "E" + bigno.ToString();
                    range = (Range)sheet.get_Range(ColumsIndex, ColumsIndex);
                    range.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 255, 0).ToArgb();
                    for (int y = 0; y < dt_Table_colunms_name.Rows.Count; y++)
                    {
                        bigno = bigno + 1;

                        WriteData(dt_Table_colunms_name.Rows[y]["Field"].ToString(), bigno, 1);
                        WriteData(dt_Table_colunms_name.Rows[y]["type"].ToString(), bigno, 2);
                        WriteData(dt_Table_colunms_name.Rows[y]["NULL"].ToString(), bigno, 3);
                        WriteData(dt_Table_colunms_name.Rows[y]["Key"].ToString(), bigno, 4);
                        WriteData(dt_Table_colunms_name.Rows[y]["Default"].ToString(), bigno, 5);
                       // Response.Write("<BR>" + dt_Table_colunms_name.Rows[y]["Field"].ToString());
                    }

                }
                //数据填充结束
                  
               
                
                string s = System.DateTime.Now.Date.Year.ToString() + "-" + System.DateTime.Now.Date.Month.ToString() + "-" + System.DateTime.Now.Date.Day.ToString() + "-" + System.DateTime.Now.Date.Hour.ToString() + "-" + System.DateTime.Now.Date.Minute.ToString() + "-" + System.DateTime.Now.Second.ToString() + "-" + System.DateTime.Now.Millisecond.ToString();
                s = s + ".xls";
                str = fileName.ToString().ToLower().Replace(".xls", s);
                //保存编辑
                // SaveAs();
                book.SaveAs(str, XlFileFormat.xlWorkbookNormal,
                          Missing, Missing, Missing, Missing,
                          XlSaveAsAccessMode.xlNoChange,
                          Missing, Missing, Missing, Missing, Missing);
                //关闭book
                book.Close(Missing, Missing, Missing);
                //退出excel application,可以将前面的excelApp.Visible = false改为excelApp.Visible = true看看;
                excelApp.Workbooks.Close();
                excelApp.Quit();
                return str;
            }
        }
     

  • 相关阅读:
    deeplearning.ai 卷积神经网络 Week 1 卷积神经网络
    deeplearning.ai 构建机器学习项目 Week 2 机器学习策略 II
    deeplearning.ai 构建机器学习项目 Week 1 机器学习策略 I
    deeplearning.ai 改善深层神经网络 week3 超参数调试、Batch Normalization和程序框架
    deeplearning.ai 改善深层神经网络 week2 优化算法
    deeplearning.ai 改善深层神经网络 week1 深度学习的实用层面
    cs231n spring 2017 lecture8 Deep Learning Networks
    cs231n spring 2017 lecture7 Training Neural Networks II
    cs231n spring 2017 lecture6 Training Neural Networks I
    cs231n spring 2017 Python/Numpy基础
  • 原文地址:https://www.cnblogs.com/greefsong/p/2640268.html
Copyright © 2020-2023  润新知