Microsoft.Office.Interop.Excel 導出Excel


private const int OLDOFFICEVESION = -4143;
        private const int NEWOFFICEVESION = 56;
        /// <summary>
        /// 使用 Excel.dll  導出 Excel
        /// </summary>
        /// <param name="list">數據</param>
        /// <param name="filename">名稱</param>
        /// <param name="ColumNames">標題名(數組-所有標題)</param>
        /// <param name="FileNames">標題名對應的數據庫字段名稱(數組-標題對應字段)</param>
        public void InteropToExcel<T>(IList<T> list, string filename, string[] ColumNames, string[] FileNames)
        {
            PropertyInfo[] propertyInfos = list.First().GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); 

            //保存excel文件的格式
            int FormatNum;
            //excel版本號
            string Version;
            Application xlApp = new Application();
            Workbooks workbooks = xlApp.Workbooks;
            //創建文件
            Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
            //創建sheet
            Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
            //這里是 Excel 表格中 第一行第一列的位置是[1,1]  不是 [0,0]
            // 設置Excel 表格中 第一行的標題 字體居中
            for (int i = 0; i < ColumNames.Length; i++)
            {
                worksheet.Cells[1, i + 1] = ColumNames[i];
                ((Range)worksheet.Cells[1, i + 1]).HorizontalAlignment = XlVAlign.xlVAlignCenter;
            }
            foreach(T item in list)
            {
                if (list == null)
                {
                    return;
                }
                for (int i = 0; i < FileNames.Length; i++)
                {
                    for (int j = 0; j < propertyInfos.Length; j++)
                    {
                        PropertyInfo pi = propertyInfos[i];
                        if(pi.Name == FileNames[i])
                        {
                            worksheet.Cells[i + 2, i + 1] = pi.GetValue(item, null).ToString();
                        }
                    }   
                }
            }
            //添加內容
            
            worksheet.StandardWidth = 15d; // 設置寬度
                                           //獲取你使用的excel 的版本號
            Version = xlApp.Version;
            //使用Excel 97-2003
            if (Convert.ToDouble(Version) < 12)
            {
                FormatNum = OLDOFFICEVESION;
            }
            //使用 excel 2007或更新
            else
            {
                FormatNum = NEWOFFICEVESION;
            }
            //保存,這里必須指定FormatNum文件的格式,否則無法打開創建的excel文件
            workbook.SaveAs(filename, FormatNum);
            //顯示創建的excel文件
            xlApp.Visible = true;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM