终于有时间可把下面的WinForm对EXCEL的操作方法与大家分享了。前面介绍了如何把获取SHEET名称和如何获取SHEET里面数据两种方法。其实这两种方法都是在为EXCEL数据导入数据库作准备,至数据怎么导入数据库将会在以后学习不断分享给大家。下面就介绍下如何把数据放SHEET中:

方法1:

View Code

 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:

View Code

 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 的操作(三)相关推荐

  1. 关于在WinForm下对Excel进行操作的总结

    关于在WinForm下对Excel进行操作的总结 [转]http://hi.baidu.com/dearfather/blog/item/8911302426071039c9955929.html - ...

  2. QTP对Excel的操作(三)之 Vbs对Excel的操作 实例讲解

    QTP对Excel的操作(一)与(二)中,分别讲解了对Excel的读与写操作,本讲我们以实例讲解,QTP执行测试过程中如何通过对Excel读写实现执行测试用例. 本例通过注册新浪会员页面(http:/ ...

  3. npoi导出文件不保存在服务器,winform NPOI excel 导出并选择保存文件路径

    public void ExcelOp(DataGridView gdv,ArrayList selHead) { if (selHead.Count==0) { MessageBox.Show(&q ...

  4. python能实现excel什么功能_Python pandas对excel的操作实现示例

    最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程.本篇介绍 pandas 的 DataFrame 对列 (Colu ...

  5. python对excel操作简书_Python实现EXCEL常用操作——pandas简介

    知乎的代码块太丑了,这里的内容就更新到简书了Python实现EXCEL常用操作--pandas简介​www.jianshu.com EXCEL是日常办公最常用的软件,然而遇到数据量特别大(超过10W条 ...

  6. python对excel增删改查_Python之Excel 优雅操作手法 精选

    前言 一直想写这一篇,却又一直被事情拖着. 我带的一个项目团队正好进行到这一块儿了,正好,将这事儿办了,以后要用的时候也不用到处找. 半点不求人. 慢慢看,优雅的操作都在后头 Tips:当下2020年 ...

  7. java excel 操作 poi_Java使用apache poi进行excel相关操作

    一.基本介绍 1.1.Apache POI介绍 Apache POI是一个可以进行微软的文档进行开源库,可以操作的文档类型包括word.ppt.excel.visio.outlook.... 本文主要 ...

  8. 计算机基础知识上机操作excer,《计算机应用基础》Excel上机操作练习题.doc

    <计算机应用基础>Excel上机操作练习题.doc <计算机应用基础>Excel上机操作练习题 第1题 建立一工作簿,并作如下操作1. 在Sheet工作表中输入如下内容 ...

  9. c#导出Excel及操作

    excel导出在C#代码中应用己经很广泛了,我这里就做些总结,供自己和读者学习用. Excel知识点.   一.添加引用和命名空间  添加Microsoft.Office.Interop.Excel引 ...

最新文章

  1. 「日常训练」 Mike and Fun (CFR305D2B)
  2. 虚拟机安装Ubuntu无法通过Xshell登录
  3. netty权威指南第三版_Hadoop权威指南(第二版及第三版)
  4. lambda表达式的语法精简
  5. 安装you-get和ffmpeg for Mac
  6. 【引用】各种软件视频教学
  7. 第26次ccf认证第二题:寻宝!大冒险!
  8. KMP Seek the Name,Seek the Fame
  9. 深度学习热点|超直观无公式图解Contrastive Predictive Coding从脸盲说起
  10. 【干货】PCB线宽与电流关系
  11. 有什么软件android跟电脑连接无线,手机电脑连接的软件有哪些(安卓手机连接电脑的方法)...
  12. 经验:怎么样免费在线PDF拆分
  13. 《创新的艺术》 读书笔记
  14. OpenCL入门一:Intel核心显卡OpenCL环境搭建
  15. 腾讯微博 - QQ微博
  16. 回复率超高的开发信怎么写?
  17. AMiner会议论文推荐第五十一期
  18. bat 批量复制 cd /d 报目录名或卷标语法不正确问题的解决
  19. 红衣教主“叫停”360路由器的背后(上)
  20. 【中级前端面经】中小型公司面试时都会问些什么?

热门文章

  1. 30岁过后,是继续上班,还是去做个小生意?
  2. 做互联网项目一定要做可循环,可积累的事情
  3. 现在最简单的赚钱套路
  4. 【leveldb】整体架构
  5. go详解strings包
  6. Python学习笔记(尚硅谷)
  7. 游标sql server_学习SQL:SQL Server游标
  8. 让您的数据库服务器与您对话:直接从SQL Agent Jobs发送电子邮件
  9. Tips for vcpkg
  10. python中的进程池:multiprocessing.Pool()