WinForm 对EXCEL 的操作(三)
终于有时间可把下面的WinForm对EXCEL的操作方法与大家分享了。前面介绍了如何把获取SHEET名称和如何获取SHEET里面数据两种方法。其实这两种方法都是在为EXCEL数据导入数据库作准备,至数据怎么导入数据库将会在以后学习不断分享给大家。下面就介绍下如何把数据放SHEET中:
方法1:
1 public void DataToExcel(DataTable dt) 2 { 3 try 4 { 5 if (dt == null) return; 6 7 Microsoft.Office.Interop.Excel.ApplicationClass myExcel = new Microsoft.Office.Interop.Excel.ApplicationClass(); 8 Microsoft.Office.Interop.Excel.Workbook xBk; //工作薄 9 Microsoft.Office.Interop.Excel.Worksheet xSt; //工作Sheet 10 11 xBk = myExcel.Workbooks.Add(true);12 xSt = (Microsoft.Office.Interop.Excel.Worksheet)xBk.ActiveSheet;13 14 myExcel.Visible = true;15 16 for (int i = 1; i <= dt.Columns.Count; ++i)17 {18 xSt.Cells[1, i] = dt.Columns[i - 1].ColumnName;19 }20 21 for (int i = 2; i <= dt.Rows.Count + 1; ++i)22 {23 for (int j = 1; j <= dt.Columns.Count; ++j)24 {25 xSt.Cells[i, j] = dt.Rows[i - 2][j - 1].ToString();26 }27 }28 29 for (int i = 1; i <= dt.Columns.Count; ++i)30 {31 Microsoft.Office.Interop.Excel.Range selectRange = xSt.get_Range(xSt.Cells[1, i], xSt.Cells[dt.Rows.Count + 1, i]);32 selectRange.Columns.AutoFit();33 } 34 }35 catch36 {37 38 }39 }
方法2:
1 public void dataToExcel(DataTable dt) 2 { 3 4 SaveFileDialog dlg = new SaveFileDialog(); 5 dlg.Filter = "Execl files (*.xls)|*.xls"; 6 dlg.FilterIndex = 0; 7 dlg.RestoreDirectory = true; 8 dlg.Title = "保存为Excel文件"; 9 dlg.FileName = DateTime.Now.Ticks.ToString().Trim();10 11 if (dlg.ShowDialog() == DialogResult.OK)12 {13 Stream myStream = dlg.OpenFile(); 14 StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));15 string columnTitle = "";16 try17 {18 //写入列标题 19 for (int i = 0; i < dt.Columns.Count; i++)20 {21 if (i > 0)22 {23 columnTitle += "\t";24 }25 columnTitle += dt.Columns[i].ColumnName;26 }27 sw.WriteLine(columnTitle);28 29 //写入列内容 30 for (int j = 0; j < dt.Rows.Count; j++)31 {32 string columnValue = "";33 for (int k = 0; k < dt.Columns.Count; k++)34 {35 if (k > 0)36 {37 columnValue += "\t";38 }39 if (dt.Rows[j][k].ToString() == "")40 columnValue += "null";41 else42 columnValue += dt.Rows[j][k].ToString().Trim();43 }44 sw.WriteLine(columnValue);45 }46 }47 catch (Exception e)48 {49 MessageBox.Show(e.ToString());50 }51 finally52 {53 sw.Close();54 myStream.Close();55 }56 }57 }58 }
显然第二种方法要比第一种方法执行速度要快得多,但是第二种方法保存的文件不是真正的EXCEL文件,而用流写的一定格式的类EXCEL文件。希望这种方法都能够帮助你。如何还有其它方法,请各位提示。以供大家共同进步。
经过网友落叶潇潇雨指点,今天也看了一下他说的那种方法。确实简单实用多了,感觉他对我的指点。现将第三种方法分享给大家。
首先在自己工程中添加MyXls.SL2.dll引用,现在把链接地址给大家:
http://files.cnblogs.com/aland-liu/MyXls.SL2.rar
方法3:
private void ExportExcel(string fileName, System.Data.DataTable dt)
{
try
{
XlsDocument xls = new XlsDocument();
xls.FileName = fileName;
string s = fileName;
s = s.Substring(s.LastIndexOf('\\') + 1, s.LastIndexOf('.') - s.LastIndexOf('\\') - 1);
org.in2bits.MyXls.Worksheet sheet = xls.Workbook.Worksheets.AddNamed(s);
ColumnInfo cinfo = new ColumnInfo(xls, sheet);
cinfo.Collapsed = true;
cinfo.ColumnIndexStart = 0;
cinfo.ColumnIndexEnd = (ushort)dt.Columns.Count;
sheet.AddColumnInfo(cinfo);
XF cellXF = xls.NewXF();
cellXF.VerticalAlignment = VerticalAlignments.Centered;
cellXF.HorizontalAlignment = HorizontalAlignments.Centered;
//cellXF.Font.Bold = true;
Cells cells = sheet.Cells;
for (int i = 1; i <= dt.Columns.Count; i++)
{
cells.Add(1, i, dt.Columns[i - 1].ColumnName, cellXF);
}
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
cells.Add(2 + i, 1 + j, dt.Rows[i][j].ToString(), cellXF);
}
}
xls.Save();
//System.Diagnostics.Process.Start(fileName);
}
catch
{
}
}
不足还望指正,谢谢。
转载于:https://www.cnblogs.com/aland-liu/archive/2011/07/25/2116525.html
WinForm 对EXCEL 的操作(三)相关推荐
- 关于在WinForm下对Excel进行操作的总结
关于在WinForm下对Excel进行操作的总结 [转]http://hi.baidu.com/dearfather/blog/item/8911302426071039c9955929.html - ...
- QTP对Excel的操作(三)之 Vbs对Excel的操作 实例讲解
QTP对Excel的操作(一)与(二)中,分别讲解了对Excel的读与写操作,本讲我们以实例讲解,QTP执行测试过程中如何通过对Excel读写实现执行测试用例. 本例通过注册新浪会员页面(http:/ ...
- npoi导出文件不保存在服务器,winform NPOI excel 导出并选择保存文件路径
public void ExcelOp(DataGridView gdv,ArrayList selHead) { if (selHead.Count==0) { MessageBox.Show(&q ...
- python能实现excel什么功能_Python pandas对excel的操作实现示例
最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程.本篇介绍 pandas 的 DataFrame 对列 (Colu ...
- python对excel操作简书_Python实现EXCEL常用操作——pandas简介
知乎的代码块太丑了,这里的内容就更新到简书了Python实现EXCEL常用操作--pandas简介www.jianshu.com EXCEL是日常办公最常用的软件,然而遇到数据量特别大(超过10W条 ...
- python对excel增删改查_Python之Excel 优雅操作手法 精选
前言 一直想写这一篇,却又一直被事情拖着. 我带的一个项目团队正好进行到这一块儿了,正好,将这事儿办了,以后要用的时候也不用到处找. 半点不求人. 慢慢看,优雅的操作都在后头 Tips:当下2020年 ...
- java excel 操作 poi_Java使用apache poi进行excel相关操作
一.基本介绍 1.1.Apache POI介绍 Apache POI是一个可以进行微软的文档进行开源库,可以操作的文档类型包括word.ppt.excel.visio.outlook.... 本文主要 ...
- 计算机基础知识上机操作excer,《计算机应用基础》Excel上机操作练习题.doc
<计算机应用基础>Excel上机操作练习题.doc <计算机应用基础>Excel上机操作练习题 第1题 建立一工作簿,并作如下操作1. 在Sheet工作表中输入如下内容 ...
- c#导出Excel及操作
excel导出在C#代码中应用己经很广泛了,我这里就做些总结,供自己和读者学习用. Excel知识点. 一.添加引用和命名空间 添加Microsoft.Office.Interop.Excel引 ...
最新文章
- 函数重载需要注意的点
- mysql warning 在哪看_查看MySQL的warning
- CLR_via_C#.3rd 翻译[1.5 本地代码生成工具NGen.exe]
- python 安装 pip,setuptools
- clustered index disadvantages in mysql
- Java比以往任何时候都摇滚
- To B业务如何获取客户?
- 前台JS事件与服务器事件的执行顺序
- linux help
- [转]写一个块设备驱动(第一章)
- 小技巧收集(10)-JS操作Cookie
- Agile PLM Create Item /BOM Dialog
- mac 删除ABC输入法
- Clickhouse 普通视图
- 设计模式六大原则详解
- java文件服务,苹果相关浏览器文件名乱码而其他例如谷歌浏览器不乱码
- 数据库开启遇到的keng
- Excel学习日记:L23-如何计算成绩排名
- python简单代码画曲线图教程-python画曲线
- Java分布式跟踪系统Zipkin(二):Brave源码分析-Tracer和Span
热门文章
- Linux环形缓冲区原理
- Error: failed to unmarshal json. invalid character '\'' looking for beginning of value解决方案
- 深度优先搜索(DFS)
- sql server定义_在SQL Server中查看定义权限
- 在AWS RDS SQL Server中进行审核
- 继承Thread类的方式创建多线程
- 注意Chart control 中ispostback 的使用
- 实验十一 团队作业7:团队项目设计完善编码
- 超文本标记语言HTML
- 抖音直播APP软件系统为什么能这么火?反映出的问题又会是什么?