private void exportExcel(string filename, string path,string title, List<ArchivedWcsTask> wcstask, List<ArchivedMovement> movement)
        {
             Excel.Application excel1 = new Excel.Application();
            try
            {               
                excel1.DisplayAlerts = false;
                Excel.Workbook workbook1 = excel1.Workbooks.Add(Type.Missing);
                excel1.Visible = false;
                Excel.Worksheet worksheet1 = (Excel.Worksheet)workbook1.Worksheets["sheet1"];  //表头

Excel.Range r, th, td;
                r = worksheet1.get_Range(worksheet1.Cells[1, 1], worksheet1.Cells[2, 6]);     //取得合并的区域  
                r.Font.Size = 15;
                r.MergeCells = true;
                worksheet1.Cells[1, 1] = title;

th = worksheet1.get_Range(worksheet1.Cells[4, 1], worksheet1.Cells[4, 6]);
                th.Font.Bold = true;

worksheet1.Cells[4, 1] = "任务号";  //Excel里从第1行,第1列计算            
                worksheet1.Cells[4, 2] = "条码号";
                worksheet1.Cells[4, 3] = "起点";
                worksheet1.Cells[4, 4] = "终点";
                worksheet1.Cells[4, 5] = "创建时间";
                worksheet1.Cells[4, 6] = "任务";

td = worksheet1.get_Range(worksheet1.Cells[3, 1], worksheet1.Cells[wcstask.Count, 6]);
                td.ColumnWidth = 15;
                int i = 5;
                int j = 1;
                foreach (var item in wcstask)
                {
                    worksheet1.Cells[i, j++] = "T" + item.TaskCode;
                    worksheet1.Cells[i, j++] = item.ContainerCodes;
                    worksheet1.Cells[i, j++] = item.StartLocation;
                    worksheet1.Cells[i, j++] = item.EndLocation;
                    worksheet1.Cells[i, j++] = item.CreatedAt.ToString();
                    worksheet1.Cells[i, j] = movement.Single(x => x.Id == item.MovementId).Tag;
                    i++;
                    j = 1;
                }

string fileName = DateTime.Parse(wcstask.FirstOrDefault().CompletedAt.ToString()).ToString("yyyyMMddHHmmss") + ".xls";
                string filePath = "c:\\WMS_Export";// Server.MapPath("~/" + fileName);

if (!Directory.Exists(filePath))
                {
                    System.IO.Directory.CreateDirectory(filePath);
                }
                filePath =filePath+"\\"+ fileName;
                workbook1.SaveAs(filePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                closeExcel(excel1);
                GC.Collect();//垃圾回收
            }catch(Exception e)
            {
                closeExcel(excel1);
                GC.Collect();//垃圾回收
            }
        }

[DllImport("user32.dll", SetLastError = true)]
        static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);
        public void closeExcel(Excel.Application excel)
        {
            try
            {
                if (excel != null)
                {
                    int lpdwProcessId;
                    GetWindowThreadProcessId(new IntPtr(excel.Hwnd), out lpdwProcessId);

System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill();
                    excel = null;
                   
                }
            }
            catch
            {
               
            }
           
        }

private void exportTxt(string filename, string path, List<ArchivedWcsTask> wcstask, List<ArchivedMovement> movement)
        {
            string line = "";
            string lable = "任务号\t条码号\t起点\t终点\t创建时间\t任务" + "\n";
            FileStream wfs = System.IO.File.Create("c:\\1.txt");
            StreamWriter sw = new StreamWriter(wfs);
            sw.Write(lable, System.Text.Encoding.ASCII);
            foreach (var item in wcstask)
            {
                line = item.TaskCode + "\t" + item.ContainerCodes + "\t" + item.StartLocation
                    + "\t" + item.EndLocation + "\t" + item.CreatedAt + "\t" + movement.Single(x => x.Id == item.MovementId).Tag + "\n";
                sw.Write(line, System.Text.Encoding.ASCII);
            }
            sw.Close();
            wfs.Close();
        }
       
    }

c#导出Excel 使用EXCEL进程的更多相关文章

  1. MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult

    导出EXCEL方法总结 MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可: 优点:可设置丰富的EXC ...

  2. 【转】c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据

    准备工作就是可以分页的DataGridView,和两个按钮,一个用来导出当前页数据到Excel,一个用来导出全部数据到Excel 没有使用SaveFileDialog,但却可以弹出保存对话框来 先做导 ...

  3. NPOI通过DataTable导出和读取Excel

    Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你得 ...

  4. 导出数据到Excel方法总结

    一,问题的提出 近来在网上经常有人问怎样把数据导出到Excel中?针对这个问题网上也有很多资料.大都比较的琐碎.本人当前从事的项目中,刚好涉及到这些内容.就顺便做了一些归纳整理.共享给大家.避免大家再 ...

  5. 从DataTable高效率导出数据到Excel

    首先从数据库读取数据到DataTable,这我就不提了,大家都明白.下面直接介绍如何从DataTable高效率导出数据到Excel中的方法,代码如下: using Microsoft.Office.I ...

  6. 1.ASP.NET MVC使用EPPlus,导出数据到Excel中

    好久没写博客了,今天特地来更新一下,今天我们要学习的是如何导出数据到Excel文件中,这里我使用的是免费开源的Epplus组件. 源代码下载:https://github.com/caofangshe ...

  7. 导出数据到Excel --使用ExcelReport有感

    先看图,这是几个月前用NPOI写的导出数据到Excel,用了上百行代码,而且难控制,导出来也比较难看 excel打开的效果 下面是我用ExcelReport类库导出到Excel的操作 1.首先引用Ex ...

  8. 使用Open xml 操作Excel系列之二--从data table导出数据到Excel

    由于Excel中提供了透视表PivotTable,许多项目都使用它来作为数据分析报表. 在有些情况下,我们需要在Excel中设计好模板,包括数据源表,透视表等, 当数据导入到数据源表时,自动更新透视表 ...

  9. Dynamics CRM导出数据到Excel

    原创地址:http://www.cnblogs.com/jfzhu/p/4276212.html 转载请注明出处 Pivot Table是微软BI的一个重要工具,所以这里讲一下Dynamics CRM ...

随机推荐

  1. -exec 与 xargs 的区别

    实地在shell里执行下如下命令就知道区别了: $ find -type f -exec echo {} \; 很明显,exec是对每个找到的文件执行一次命令.从这里可以看出exec的缺点是每处理一个 ...

  2. JAVA NIO 类库的异步通信框架netty和mina

    Netty 和 Mina 我究竟该选择哪个? 根据我的经验,无论选择哪个,都是个正确的选择.两者各有千秋,Netty 在内存管理方面更胜一筹,综合性能也更优.但是,API 变更的管理和兼容性做的不是太 ...

  3. linux下开发c++第二弹--helloworld与makefile

    一:hello world sudo vim hello.cpp 输入  g++ -o hello hello.cpp  获得hello 输入  ./hello 运行,显示结果hello world! ...

  4. Java邮件服务学习之一:邮件服务概述

    java可以提供邮件服务:一般理解的邮件服务就是可以发送和接收邮件的客户端,另外就是使用java编写邮件服务端:两者区别在于客户端只负责给终端客户收发邮件,就相当于小区楼下的那一排排的铁皮邮箱盒,而邮 ...

  5. iOS学习之基本概念

    学习iOS最重要的是态度和兴趣,如果你对于学习始终抱有不断的热情和端正的态度,那么,无论是什么,你总会成功的! 有一句话与大家共勉:过程中跌倒多少次都没有关系,重要的是,跌倒后你能够站起来重新寻找正确 ...

  6. hdu4505小Q系列故事——电梯里的爱情

    小Q系列故事——电梯里的爱情 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  7. [5] Zygote

    Android设备中的两大进程,如下图 1,由init进程创建的Daemon进程 2,由 Zygote进程创建的应用程序进程 什么是Zygote? zygote是“受精卵”的意思.在Android里, ...

  8. java中关于类的封装与继承,this、super关键字的使用

    原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5454849.html. this关键字: this代表当前对象,它有以下几种用途: 1.本类 ...

  9. 项目经验之:GIS的初步工作窗体的搭建

    不多说了,上图,初步工作刚好完 GIS平台系统,实现整个供水系统的协调与统一.系统以管网为基础依据,建立可实现供水管网规划设计.输配管理.图档管理.抢修辅助决策及综合查询.统计等功能. 整体窗口设计 ...

  10. iis 启用父目录路径访问

    今天公司有个客户保修网站后台无法访问,我查看了源代码,发现ASP代码本身并没有什么问题.而且我下到本地能够访问.就是在网上不能正常连接,显示入下错误: Server.MapPath() 错误 'ASP ...