zoukankan      html  css  js  c++  java
  • C# 导出exl

    /// <summary>
        /// 导出exl
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void PFBtnExport_Click1(object sender, EventArgs e)
        {
            System.Data.DataTable mainInfoTable = null;

            string viewName = "视图名称";

            mainInfoTable = ViewUtil.QueryView(viewName, null, null);

            if (mainInfoTable.Rows.Count == 0)
            {

                MsgBox("没有数据导出!");
                return;
            }       

            else
            {            
                  string expFilePath = "xxxx.xls"; //导出文件

                 string tempFilePath ="D:\\BimsExportFiles\\xxx.xls"; //临时模版文件路径  

               if (!Directory.Exists("D:\\ExportFiles"))
                    Directory.CreateDirectory("d:\\ExportFiles");
                        
                string result = ExportDataIntoExcel(mainInfoTable, 24, "xxxx.xls", expFilePath, tempFilePath);
            }
        }

        //将给定表中前columnNum列的数据导出到Excel文件中
        public string ExportDataIntoExcel(System.Data.DataTable mainInfoTable, int columnNum, string sourcePath, string destinationPath, string tempFilePath)
        {
            string filepath =Server.MapPath(sourcePath);//模板文件路径      

            FileAttributes attrs;
            if (File.Exists(destinationPath))
            {
                //  先把文件的属性读取出来
                attrs = File.GetAttributes(destinationPath);
                //  下面表达式中的 1 是 FileAttributes.ReadOnly 的值
                // 此表达式是把 ReadOnly 所在的位改成 0,
                attrs = (FileAttributes)((int)attrs & ~(1));
                File.SetAttributes(destinationPath, attrs);

                File.Delete(destinationPath);
            }
            if (File.Exists(tempFilePath))
                File.Delete(tempFilePath);
            tempFilePath=Request.MapPath(tempFilePath);
            File.Copy(filepath,tempFilePath,true);

            //  先把文件的属性读取出来
            attrs = File.GetAttributes(tempFilePath);
            //  下面表达式中的 1 是 FileAttributes.ReadOnly 的值
            // 此表达式是把 ReadOnly 所在的位改成 0,
            attrs = (FileAttributes)((int)attrs & ~(1));
            File.SetAttributes(tempFilePath, attrs);

            object missing = Type.Missing;
            Microsoft.Office.Interop.Excel.Application application = new Microsoft.Office.Interop.Excel.Application();
            Workbook workbook = application.Workbooks.Open(tempFilePath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
            try
            {
                Worksheet oSheet = (Worksheet)workbook.Sheets.get_Item(1);
                Range oCells = oSheet.Cells;

                for (int row = 0; row < mainInfoTable.Rows.Count; row++)
                {
                    //将table数据写入Excel
                    int cellRow = row + 2;
                    oCells[cellRow, 1] = mainInfoTable.Rows[row][1];

                     oCells[cellRow, 1] = mainInfoTable.Rows[row][2];

                   //.......

                }
                //保存
                workbook.SaveAs(tempFilePath, missing, missing, missing, missing, missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                //关闭
                workbook.Close(missing, missing, missing);
                application.Workbooks.Close();
                application.Quit();

                // objBook.Close(false, mode.FullName, missing);

                //结束进程
                if (application != null)
                {
                    foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName("Excel"))
                    {
                        //先判断当前进程是否是excel  
                        if (!p.CloseMainWindow())
                        {
                            p.Kill();
                        }
                    }
                }
                workbook = null;
                application = null;
                //强制对所有代进行垃圾回收
                GC.Collect();

            }
            return "OK";

        }

  • 相关阅读:
    Oracle SQL性能优化
    readystate, 异步
    DOMContentLoaded
    有限状态机(Finite-state machine)
    APPcache
    读取上传文件内容
    drag file upload xhr 拖拽异步上传文件
    web worker
    页面性能测试
    闭包用法,延迟tab
  • 原文地址:https://www.cnblogs.com/zmmlczy/p/2627794.html
Copyright © 2011-2022 走看看