直接上代码:

        private void button1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
FormWaiting formWaiting = new FormWaiting();
formWaiting.Show();
formWaiting.Focus();
try
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "数据文件(*.xls)|*.xls|数据文件(*.xlsx)|*.xlsx";
sfd.FilterIndex = 1;//设置默认文件类型显示顺序
sfd.RestoreDirectory = true;//保存对话框是否记忆上次打开的目录 //点了保存按钮进入
if (sfd.ShowDialog() == DialogResult.OK)
{
string fullName = sfd.FileName.ToString(); //获得文件路径 Excel.Application xlApp = new Excel.Application();
Excel.Workbooks workbooks = xlApp.Workbooks;
Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet); int count = 0;
for (int i = 0; i < arrayRawInfraredImage.Length; i++)
{
if (arrayRawInfraredImage[i] != null)
{
count++;
Excel.Worksheet worksheet;
workbook.Worksheets.Add(System.Reflection.Missing.Value, workbook.Worksheets[count], 1, Type.Missing);
worksheet = (Excel.Worksheet)workbook.Worksheets[count];
worksheet.Name = count.ToString();
bodyToSheet(worksheet, arrayRawInfraredImage[i]);
}
}
workbook.Saved = true;
workbook.SaveCopyAs(fullName);
xlApp.Quit();
MessageBox.Show("已保存至" + fullName);
}
}
catch (Exception ee)
{
DBConnection.Log("", ee);
MessageBox.Show("保存失败" + ee.Message); }
formWaiting.Hide();
formWaiting.Dispose();
}
} private void bodyToSheet(Excel.Worksheet sheet, RawInfraredImage points)
{
int Width = points.GetWidth();
int Height = points.GetHeight();
if (points == null)
{
return;
}
Excel.Range range = sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[Height, Width]);
range.ColumnWidth = 6;
range.RowHeight = 30; short[,] tempArray = points.GetRawTemperatureData();
double[,] RawTemperatureArray = new double[Height, Width];
for (int i = 0; i < Width; i++)
{
for (int j = 0; j < Height; j++)
{
if (tempArray[i, j] > points.GetMinTemperature() * 100)
{
RawTemperatureArray[j, Width - i - 1] = ((double)tempArray[i, j] / 100);
}
}
} range.Value = RawTemperatureArray;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

逻辑更清楚参考:

using Microsoft.Office.Interop.Excel;//可以使用工具选项下的nuget包管理器进行联网下载安装Microsoft.Office.Interop.dll
using Excel = Microsoft.Office.Interop.Excel; namespace ExcelDataWD
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Button1_Click(object sender, EventArgs e)
{
string importExcelPath = System.Windows.Forms.Application.StartupPath + "\\imaport.xlsx";
string exportExcelPath = System.Windows.Forms.Application.StartupPath + "\\export.xlsx";
//创建
Excel.Application xlApp = new Excel.Application();
xlApp.DisplayAlerts = false;
xlApp.Visible = false;
xlApp.ScreenUpdating = false;
//打开Excel
Excel.Workbook xlsWorkBook = xlApp.Workbooks.Open(importExcelPath, System.Type.Missing, System.Type.Missing, System.Type.Missing,
System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing,
System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing); //处理数据过程,更多操作方法自行百度
Excel.Worksheet sheet = xlsWorkBook.Worksheets[];//工作薄从1开始,不是0
sheet.Cells[, ] = "test"; //另存
xlsWorkBook.SaveAs(exportExcelPath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
//关闭Excel进程
ClosePro(xlApp, xlsWorkBook);
}
public void ClosePro(Excel.Application xlApp, Excel.Workbook xlsWorkBook)
{
if (xlsWorkBook != null)
xlsWorkBook.Close(true, Type.Missing, Type.Missing);
xlApp.Quit();
// 安全回收进程
System.GC.GetGeneration(xlApp);
IntPtr t = new IntPtr(xlApp.Hwnd); //获取句柄
int k = ;
GetWindowThreadProcessId(t, out k); //获取进程唯一标志
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
p.Kill(); //关闭进程
} [DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
}
}

c# 导出数据到excel的更多相关文章

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

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

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

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

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

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

  4. Dynamics CRM导出数据到Excel

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

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

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

  6. php导出数据到excel,防止身份证等数字字符格式变成科学计数的方法

    而关于php的也有,但是大多都是用phpExcel导出的方法或者spreadsheet等类或者控件之类的导出方法,而我所在维护的系统却用很简单的方法,如下,网上很少有讲如何设置要导出数据的EXcel格 ...

  7. NPOI导出数据到Excel

    NPOI导出数据到Excel   前言 Asp.net操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使用NPOI能够帮助开发者在没有安装微 ...

  8. ASP.NET导出数据到Excel 实例介绍

    ASP.NET导出数据到Excel  该方法只是把asp.net页面保存成html页面只是把后缀改为xlc不过excel可以读取,接下连我看看还有别的方式能导出数据,并利用模版生成. 下面是代码 新建 ...

  9. C#导出数据到Excel通用的方法类

    导出数据到Excel通用的方法类,请应对需求自行修改. 资源下载列表 using System.Data; using System.IO; namespace IM.Common.Tools { p ...

  10. 一个方便且通用的导出数据到 Excel 的类库

    一个方便且通用的导出数据到 Excel 的类库 起源: 之前在做一个项目时,客户提出了许多的导出数据的需求: 导出用户信息 导出业务实体信息 各种查询都要能导出 导出的数据要和界面上看到的一致 可以分 ...

随机推荐

  1. PyQt5--CustomizeSignal

    # -*- coding:utf-8 -*- ''' Created on Sep 14, 2018 @author: SaShuangYiBing Comment: This example is ...

  2. elk平台定制化查询规则

    一.查询某IP在某时间内TOP10的请求 步骤: 点击“Visualize”选项卡 创建“Data table” 点击“From a new search” 下拉选择“F5-access” 在“buc ...

  3. Vue入门1

    欢迎转载,转载请注明出处. 前言 学习本系列Vue知识,需要结合本系列的一些demo.你可以查看我的 Github 或者直接下载 ZIP包 . 建议学习本系列之前已经会一个其他的前端框架,了解计算属性 ...

  4. Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver

    1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...

  5. ORACLE 11GR2常用命令

    一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...

  6. <Android 开源库> PhotoPicker 从头到脚

    1. 简介 PhotoPicker, 是一款开源的图片选择器.效果上和微信相似. 2. 使用方法 2.1 添加依赖 dependencies { compile 'me.iwf.photopicker ...

  7. Android Des加密解密

    算法转自:http://www.linuxidc.com/Linux/2011-08/41866.htm import java.security.Key; import java.security. ...

  8. P1272 重建道路

    题目描述 一场可怕的地震后,人们用N个牲口棚(1≤N≤150,编号1..N)重建了农夫John的牧场.由于人们没有时间建设多余的道路,所以现在从一个牲口棚到另一个牲口棚的道路是惟一的.因此,牧场运输系 ...

  9. jqgrid 行选中multiboxonly属性说明

    multiboxonly属性值为布尔值. false:点击行时,同时选中改行的复选框,支持多行选中 true:点击行时,只将点击的行处理为选中状态,切换其他行时,原选中行的选中效果被取消 (永远只有一 ...

  10. jqgrid 谈谈给表格设置列头事件、行事件、内容事件

    往往我们需要给显示的jqgrid表格赋予事件功能,比如:列头事件.行事件.内容事件.需要的效果可能如下: 如你所见,以上的超链接和按钮均是绑定的事件.那分别如何实现这些事件的绑定呢? 一.行事件 行事 ...