c#导出Excel 使用EXCEL进程
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进程的更多相关文章
- MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult
导出EXCEL方法总结 MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可: 优点:可设置丰富的EXC ...
- 【转】c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据
准备工作就是可以分页的DataGridView,和两个按钮,一个用来导出当前页数据到Excel,一个用来导出全部数据到Excel 没有使用SaveFileDialog,但却可以弹出保存对话框来 先做导 ...
- NPOI通过DataTable导出和读取Excel
Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你得 ...
- 导出数据到Excel方法总结
一,问题的提出 近来在网上经常有人问怎样把数据导出到Excel中?针对这个问题网上也有很多资料.大都比较的琐碎.本人当前从事的项目中,刚好涉及到这些内容.就顺便做了一些归纳整理.共享给大家.避免大家再 ...
- 从DataTable高效率导出数据到Excel
首先从数据库读取数据到DataTable,这我就不提了,大家都明白.下面直接介绍如何从DataTable高效率导出数据到Excel中的方法,代码如下: using Microsoft.Office.I ...
- 1.ASP.NET MVC使用EPPlus,导出数据到Excel中
好久没写博客了,今天特地来更新一下,今天我们要学习的是如何导出数据到Excel文件中,这里我使用的是免费开源的Epplus组件. 源代码下载:https://github.com/caofangshe ...
- 导出数据到Excel --使用ExcelReport有感
先看图,这是几个月前用NPOI写的导出数据到Excel,用了上百行代码,而且难控制,导出来也比较难看 excel打开的效果 下面是我用ExcelReport类库导出到Excel的操作 1.首先引用Ex ...
- 使用Open xml 操作Excel系列之二--从data table导出数据到Excel
由于Excel中提供了透视表PivotTable,许多项目都使用它来作为数据分析报表. 在有些情况下,我们需要在Excel中设计好模板,包括数据源表,透视表等, 当数据导入到数据源表时,自动更新透视表 ...
- Dynamics CRM导出数据到Excel
原创地址:http://www.cnblogs.com/jfzhu/p/4276212.html 转载请注明出处 Pivot Table是微软BI的一个重要工具,所以这里讲一下Dynamics CRM ...
随机推荐
- CDH5.5.1版HBase安装使用LZO压缩
1.安装 RHEL/CentOS/Oracle 5 Navigate to this link and save the file in the /etc/yum.repos.d/ dire ...
- 一个通用的Makefile (转)
据http://bbs.chinaunix.net/thread-2300778-1-1.html的讨论,发现还是有很多人在问通用Makefile的问题,这里做一个总结.也作为以后的参考. ...
- Visual Studio 2013智能提示失效解决办法
各种解决VS2013智能提示失效办法: 1.重置所有设置 工具->导入导出设置->重置所有设置 2.智能提示开关: 工具->选项->文本编辑器->C#->常规 ...
- cocos2d-x 纹理深入研究 第二部分
转自:http://blog.csdn.net/qq51931373/article/details/9152227 1.纹理控制. 看此代码: CCSprite *pSprite = CCSprit ...
- iOS 将图片保存到本地
//将图片保存到本地 + (void)SaveImageToLocal:(UIImage*)image Keys:(NSString*)key { NSUserDefaults* prefer ...
- CUDA常见问题之无法在c文件中调用cu文件中定义的函数
当在C源文件中调用cu文件中定义的函数时,会出现undefined reference的问题,而在C++源文件中调用cu文件中定义的函数时则不会出现这个问题. 出现上述问题的原因是,nvcc编译器采用 ...
- C# random(number)
C#随机函数Random()的用法 出自:http://www.cnblogs.com/wang726zq/archive/2012/04/28/2474711.html http://blog.cs ...
- c/c++字符串处理大集合
rember this strncpy(a,b,5); a[5]='\0'; char a[10]; memset(a,'#',sizeof(a)); a[10]='\0'; 刚开始学C/C++时,一 ...
- Oracle-11g-R2 于 Linux 上的 RAC 卸载
安装环境: SuSE Linux Enterprise Server 11 SP3 Oracle 11g 11.2.0.3 卸载步骤: 1.卸载 Database 软件(oracle,第一节点) ...
- Java中重写与重载的辨析
摘要:在我们学习Java过程中,重写与重载使我们在面向对象里要学习的重要知识点之一,那我们看看它们有那些区别: 一.重写 1.概念:简单的说就是子类将从父类继承而来的方法重新实现一次. 2.特点: ① ...