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. FLEX实现两侧边栏固定中间自适应布局

    <style type="text/css"> #outer{ display: flex; width: 100%; flex-flow: row nowrap; } ...

  2. ERROR (ClientException)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABPwAAABCCAIAAABM0F+3AAAgAElEQVR4nO2d+29d13Xn7y+xyMvLty

  3. Spring EL Lists, Maps example

    In this article, we show you how to use Spring EL to get value from Map and List. Actually, the way ...

  4. App启动加载广告页面思路

    需求 很多app(如淘宝.美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入一个广告页面,点击返回进入首页.今天我们就来开发一个广告 ...

  5. android使用mount挂载/system/app为读写权限,删除或替换系统应用

    注意:以下代码中#开头的则为需要执行的shell命令,其他的为打印的结果.#代表需要使用ROOT权限(su)执行,所以想要修改您android手机某个目录挂载为读写,首先需要有ROOT权限! 先要得到 ...

  6. 工具栏停靠实现(toolbar docking)

    // TODO: 如果不需要工具栏可停靠,则删除这三行 m_ToolBar_File.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_A ...

  7. CloudStack 使用生态统计

    http://shapeblue.com/

  8. PC/UVa 题号: 110104/706 LC-Display (液晶显示屏)题解

    #include <string> #include <iostream> #include <cstring> #include <algorithm> ...

  9. PostgreSQL的 initdb 源代码分析之二十二

    继续分析 load_plpgsql(); 展开: 就是让postgres 执行 create extension plpgsql cmd是: "/home/pgsql/project/bin ...

  10. PostgreSQL的 initdb 源代码分析之一

    开始第一段: int main(int argc, char *argv[]) { /* * options with no short version return a low integer, t ...