终于有时间可把下面的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. 函数重载需要注意的点
  2. mysql warning 在哪看_查看MySQL的warning
  3. CLR_via_C#.3rd 翻译[1.5 本地代码生成工具NGen.exe]
  4. python 安装 pip,setuptools
  5. clustered index disadvantages in mysql
  6. Java比以往任何时候都摇滚
  7. To B业务如何获取客户?
  8. 前台JS事件与服务器事件的执行顺序
  9. linux help
  10. [转]写一个块设备驱动(第一章)
  11. 小技巧收集(10)-JS操作Cookie
  12. Agile PLM Create Item /BOM Dialog
  13. mac 删除ABC输入法
  14. Clickhouse 普通视图
  15. 设计模式六大原则详解
  16. java文件服务,苹果相关浏览器文件名乱码而其他例如谷歌浏览器不乱码
  17. 数据库开启遇到的keng
  18. Excel学习日记:L23-如何计算成绩排名
  19. python简单代码画曲线图教程-python画曲线
  20. Java分布式跟踪系统Zipkin(二):Brave源码分析-Tracer和Span

热门文章

  1. Linux环形缓冲区原理
  2. Error: failed to unmarshal json. invalid character '\'' looking for beginning of value解决方案
  3. 深度优先搜索(DFS)
  4. sql server定义_在SQL Server中查看定义权限
  5. 在AWS RDS SQL Server中进行审核
  6. 继承Thread类的方式创建多线程
  7. 注意Chart control 中ispostback 的使用
  8. 实验十一 团队作业7:团队项目设计完善编码
  9. 超文本标记语言HTML
  10. 抖音直播APP软件系统为什么能这么火?反映出的问题又会是什么?