c#对Excel操作

原创 2007年10月09日 12:48:00

本代码可以对Excel生成自定义的交叉表头,可以制作自定义的交叉报表。

代码使用的是Owc11库,要先安装这个库,再将其引用到项目中。

 对excel主要的操作有:

1.新建excel进程

2.获得操作范围

3.对单元格进行纵向横向合并

4.设置样式

5.导出

6.以网面形式显示

private void button1_Click(object sender, EventArgs e)
        
...{
            
            Microsoft.Office.Interop.Owc11.SpreadsheetClass xlsheet 
= new Microsoft.Office.Interop.Owc11.SpreadsheetClass();
            
            FillInLeft(
1, xlsheet, sList, xLevel);

            
try
            
...{                               
               
//导出
                xlsheet.Export("../../TestOWC.htm", Microsoft.Office.Interop.Owc11.SheetExportActionEnum.ssExportActionNone, Microsoft.Office.Interop.Owc11.SheetExportFormat.ssExportHTML);
            }

            
catch
            
...{
                MessageBox.Show(
"Export Error!");
            }


            
string strFileName = @"D:TestOWC.htm";
            Object refmissing 
= System.Reflection.Missing.Value;
            axWebBrowser1.Navigate(strFileName, 
ref refmissing, ref refmissing, ref refmissing, ref refmissing);
            
        }


private void FillInLeft(int beginRow, Microsoft.Office.Interop.Owc11.SpreadsheetClass xlsheet, Stack sList, int xlevel)
        
...{//xml中的节点写入Excel的顺序是:由上往上,由左往右
            
//beginRow:从第几行开始写入 xlsheet:目的Excel文件 sList:存入节点的堆栈 xlevle:深度
            int row = beginRow; //int row = ((node)sList.Peek()).i;
            while (sList.Count > 0)
            
...{
                node node1 
= (node)sList.Pop();
                
if (node1.i > 1)
                
...{//有子节点且子节点在2个以上,需纵向合并
                    xlsheet.get_Range(xlsheet.Cells[row, node1.j], xlsheet.Cells[row + node1.i - 1, node1.j]).set_MergeCells(true);
                }

                
if (node1.i == 0)
                
...{
                    
if (node1.j < xlevel)
                    
...{//叶节点不在最下层,则横向合并
                        xlsheet.get_Range(xlsheet.Cells[row, node1.j], xlsheet.Cells[row, xlevel]).set_MergeCells(true);
                    }

                }

                xlsheet.Cells[row, node1.j] 
= node1.n.Attributes.GetNamedItem("name").Value;
                
if (node1.i == 0//是叶节点,则下一个节点填在下一行
                    row += 1;
            }


            Microsoft.Office.Interop.Owc11.Range range 
= xlsheet.get_Range(xlsheet.Cells[11], xlsheet.Cells[xlsheet.ActiveSheet.UsedRange.Rows.Count, xlsheet.ActiveSheet.UsedRange.Columns.Count]);
            
//单元格文本水平居中对齐
            range.set_HorizontalAlignment(Microsoft.Office.Interop.Owc11.XlHAlign.xlHAlignCenter);
            
//单元格文本垂直居中对齐
            range.set_VerticalAlignment(Microsoft.Office.Interop.Owc11.XlVAlign.xlVAlignCenter);
            
//设置表头列宽
            range.set_ColumnWidth(14);
            
//设置边框
            range.Borders.set_LineStyle(Microsoft.Office.Interop.Owc11.XlLineStyle.xlContinuous);
        }

使用C#对Excel文档的相关操作

  1.首先需要引入Excel的Com组件,Microsoft Excel 11.0 Object Library 1.5(该组件版本为office2003)添加该引用后在解决方案的引用文件夹里会有E...
  • wwwinking
  • wwwinking
  • 2009年12月29日 17:51
  • 3256

C#对Excel的读写操作

读取Excel,首先要添加Microsoft.Office.Interop.Excel 12.0 动态库  读取工作薄中的sheetspublic ArrayList loadExcelSheets(...
  • dyyaries
  • dyyaries
  • 2011年06月29日 18:05
  • 1729

C#项目中操作Excel文件——使用NPOI库

实际C#项目中经常会涉及到需要对本地Excel文件进行操作,特别是一些包含数据记录、分析、汇总功能模块的项目。常用的操作Excel文件的方法主要有三个: 1. OleDb: 这种方式是把整个Exc...
  • dcrmg
  • dcrmg
  • 2016年08月29日 20:23
  • 16280

C#操作Excel总结

0. 导入命名空间:  1 2 3 4 using Microsoft.Office.Core; using Microsoft.Office....
  • weizhiai12
  • weizhiai12
  • 2015年08月28日 20:34
  • 2802

C#学习之操作excel表格

-------------------自己的实践方案          今天开始学习C#使用Excel。          首先,要先添加引用:   若发现没有这个项,可以重新安装office,我...
  • HK_5788
  • HK_5788
  • 2015年10月18日 01:21
  • 3299

操作EXCEL代码(c#完全版)

using System;     using System.Collections;     using Excel=Microsoft.Office.Interop.Excel;    ...
  • my98800
  • my98800
  • 2016年11月08日 09:26
  • 1047

C#(源码)操作Excel大全1

C#对excel的操作
  • u011981242
  • u011981242
  • 2015年09月24日 10:35
  • 360

C#操作excel(多种方法比较)

我们在做excel资料的时候,通常有以下方法。 一.导入导出excel常用方法: 1.用查询表的方式查询并show在数据集控件上。 public static string st...
  • u012543266
  • u012543266
  • 2014年03月26日 21:30
  • 1554

C#中操作Excel(4)—— 向Excel中插入两种图表以及设置图表格式

引言         本文主要讨论下向Excel中插入图表的两种方式。在Excel中图表是有两种级别的,一种是和sheet同级别的图表,也就是说整个excel的标签页就是一个图表;还有一种就是我们最...
  • lzhui1987
  • lzhui1987
  • 2016年11月18日 11:41
  • 2844

C#中操作Excel(3)—— Excel中操作文本、图片和批注

一 引言        本文主要介绍向Excel中插入文本和图片的方法。相信大家对Excel的模型对象都有了一定的了解,和Word相似,Excel中插入文本和图片也需要依靠Range对象。但是与Wor...
  • lzhui1987
  • lzhui1987
  • 2016年11月17日 11:35
  • 1584
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c#对Excel操作
举报原因:
原因补充:

(最多只允许输入30个字)