public enum ClipboardFormats : uint
{
CF_TEXT = 1,
CF_BITMAP = 2,
CF_METAFILEPICT = 3,
CF_SYLK = 4,
CF_DIF = 5,
CF_TIFF = 6,
CF_OEMTEXT = 7,
CF_DIB = 8,
CF_PALETTE = 9,
CF_PENDATA = 10,
CF_RIFF = 11,
CF_WAVE = 12,
CF_UNICODETEXT = 13,
CF_ENHMETAFILE = 14
} public class ClipboardUtility
{
[DllImport("user32.dll")]
private static extern bool OpenClipboard(IntPtr hWndNewOwner); [DllImport("user32.dll")]
private static extern bool EmptyClipboard(); [DllImport("user32.dll")]
private static extern IntPtr GetClipboardData(uint uFormat); [DllImport("user32.dll")]
private static extern IntPtr SetClipboardData(uint uFormat, IntPtr hMem); [DllImport("user32.dll")]
private static extern bool CloseClipboard(); [DllImport("kernel32.dll")]
private static extern UIntPtr GlobalSize(IntPtr hMem); public static void SetClipboardText(string text, Encoding encoding)
{
byte[] bytes = encoding.GetBytes(text);
IntPtr alloc = Marshal.AllocHGlobal(bytes.Length + 1);
Marshal.Copy(bytes, 0, alloc, bytes.Length);
OpenClipboard(IntPtr.Zero);
EmptyClipboard();
SetClipboardData((uint)ClipboardFormats.CF_TEXT, alloc);
CloseClipboard();
} public static string GetClipboardText(Encoding encoding)
{
OpenClipboard(IntPtr.Zero);
IntPtr alloc = GetClipboardData((uint)ClipboardFormats.CF_TEXT);
byte[] bytes = new byte[(int)GlobalSize(alloc)];
Marshal.Copy(alloc, bytes, 0, bytes.Length);
CloseClipboard();
return encoding.GetString(bytes);
}
[STAThread]
public static void clear()
{
Clipboard.Clear();
}
} public bool CreateExcelFileForDataTable()
{
Excel.Application app = new Excel.Application();
app.Visible = true;//让Excel显示(调试用)
Excel.Workbooks ws = app.Workbooks;
Excel.Workbook workbook = ws.Add(Excel.XlWBATemplate.xlWBATWorksheet); // 默认已经创建了一个worksheet
int sheetCount = 2;//Excel页数
workbook.Sheets.Add(Type.Missing, workbook.Sheets[1], sheetCount, Type.Missing);
List<StringBuilder> list = new List<StringBuilder>();
StringBuilder sb = new StringBuilder();
sb.Append(@"<table align='center' border='0' cellpadding='2' cellspacing='0' width='100%'>
<tbody>
<tr>
<td style='color: #ff0000'><asp:Label ID='lblTX0' runat='Server' >WT</asp:Label><br /></td>
<td style='color: #ff0000'><asp:Label ID='lblTX0' runat='Server' >WT</asp:Label><br /></td>
</tr>
<tr>
<td style='color: #ff0000'><asp:Label ID='lblTX0' runat='Server' >WT</asp:Label><br /></td>
<td style='color: #ff0000'><asp:Label ID='lblTX0' runat='Server' >WT</asp:Label><br /></td>
</tr>
</tbody>
</table>");
list.Add(sb);
list.Add(sb);
list.Add(sb);
for (int i = 1; i <= workbook.Sheets.Count; i++)
{ Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[i]; //得到worksheet
worksheet.Name = "第" + i.ToString() + "个Sheet";// 为worksheet设置名字 ClipboardUtility.SetClipboardText(list[i - 1].ToString(),Encoding.Default);//用默认编码设置剪贴板内容
worksheet.Paste();//从剪贴板粘贴到Excel中。
worksheet.Columns.EntireColumn.AutoFit(); //自动适应长度
}
//如果Excel不显示,记得最后要关闭Excel,不然会开很多在内存。
ws.Close();
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
worksheet = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
workbook = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
ws = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
app = null; return true;
}

  

asp.net利用剪切板导出excel的更多相关文章

  1. Java利用POI导入导出Excel中的数据

         首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...

  2. android利用剪切板来实现数据的传递

    在Android开发中我们经常要遇到的一个问题就是数据在不同的Activity之间的共享.在Android开发中有很多种方法可以达到这个目地. 这里介绍一种比较常见.又常用的一种方法就是使用剪切板.我 ...

  3. Android 利用剪切板(clipboardManager )实现数据传递

    首先是系统剪切板的调用服务: ClipboardManager ClipboardManager=getSystemService(Context.CLIPBOARD_SERVICE); 然后是写入, ...

  4. ASP.Net MVC利用NPOI导入导出Excel

    因近期项目遇到所以记录一下: 首先导出Excel: 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// <s ...

  5. 利用POi3.8导出excel产生大量xml临时文件怎么办?

    在实际项目中,经常会用到POI3.8来导出excel.而导出excel的时候,会因为残留大量以.xml结尾的文件而导致服务器存储空间急剧增长,最后导致系统挂了.为此,该怎么办呢? .xml后缀残留文件 ...

  6. iOS利用剪切板在app中传递信息

    利用iOS剪切板在app中传递信息 App1 中添加URLSchemes   app1 App2 中国添加URLSchemes   app2 App1中进入app2: UIApplication.sh ...

  7. .net mvc利用NPOI导入导出excel

    1.导出Excel :首先引用NPOI包(Action一定要用FileResult) /// <summary> /// 批量导出需要导出的列表 /// </summary> ...

  8. ASP.NET MVC 使用NPOI导出Excel 无法访问已关闭的流(转)

    第一步重写MemoryStream , 让它不能自动关闭. //新建类 重写Npoi流方法 public class NpoiMemoryStream : MemoryStream { public ...

  9. net mvc 利用NPOI导入导出excel

    1.导出Excel : 首先引用NPOI包(Action一定要用FileResult) /// <summary> /// 批量导出需要导出的列表 /// </summary> ...

随机推荐

  1. BZOJ 1051: [HAOI2006]受欢迎的牛( tarjan )

    tarjan缩点后, 有且仅有一个出度为0的强连通分量即answer, 否则无解 ----------------------------------------------------------- ...

  2. 在数组中找几个数的和等于某个数[LeetCode]

    首先明确一点,这个方面的问题设计到的知识点是数组的查找的问题.对于类似的这样的查找操作的具体办法就是三种解决方法: 1.暴力算法,多个for循环,很高的时间复杂度 2.先排序,然后左右夹逼,但是这样会 ...

  3. MySql 数据库定时备份

    1.使用sqldump+任务计划 mysqldump备份成sql文件==============假想环境:MySQL   安装位置:C:\MySQL论坛数据库名称为:bbsMySQL root   密 ...

  4. PHP中类的继承关系

    在PHP中,我时常会写一个类,类写了一个共用方法,然后让子类去继承就能得到相应的功能.假设大致有这么一个父类: 1 <?php 2 class Father{ 3 4 public functi ...

  5. poj 2135 Farm Tour 费用流

    题目链接 给一个图, N个点, m条边, 每条边有权值, 从1走到n, 然后从n走到1, 一条路不能走两次,求最短路径. 如果(u, v)之间有边, 那么加边(u, v, 1, val), (v, u ...

  6. [转]android Handler使用

    转 http://blog.csdn.net/new_abc/article/details/8184634 不过这个我看不懂 不知道为什么i的值可以接着增长... package com.examp ...

  7. 1_HelloWorld

    学iOS开发与学Swift是两件事情,Swift只是一种语言,它有官方手册,里面包含了全部的语法.对其他任何一门语言很熟悉的人,学习Swift可能只需要几天的时间.而这之后,学习iOS开发才是难点,有 ...

  8. 01_什么是Elasticsearch

    Logstash是一个开源的用于收集,分析和存储日志的工具. Kibana4用来搜索和查看Logstash已索引的日志的web接口.这两个工具都基于 Elasticsearch. Logstash: ...

  9. 测试横竖屏切换时activity 的生命周期

    对于这个面试题,相信大家都见过,网上给出的答案是: 1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 2.设 ...

  10. ExtJS中form提交之后获取返回的json值

    simpleForm.form.doAction('submit', { url : 'editUserType', method : 'post', params : '', // 提交成功后执行s ...