`

c# 导出Excel

    博客分类:
  • c#
阅读更多

初学c#,由于项目需要操作Excel。网上搜索了一番,资料挺多。不过写的过于冗余,一上来就是一大断代码,看的头疼,

总结了下,不足的忘补充

考虑到兼容问题,针对office2003的操作

---必须的库 Microsoft.Office.Interop.Excel.dll  (附件)

----代码中用到的类

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;

using System.Data;
using System.IO;
using System.Text;
using System.Windows;
using System.Reflection;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;

 

创建一个新的Excel文件

 

(代码片段1)

  Object missing = Missing.Value;

            Excel.Application m_objExcel = new Excel.Application();
            Excel.Workbooks m_objWorkBooks = m_objExcel.Workbooks;

          Excel.Workbook m_objWorkBook = m_objWorkBooks.Add(true);
          Excel.Sheets m_objWorkSheets = m_objWorkBook.Sheets; ;
          Excel.Worksheet m_objWorkSheet = (Excel.Worksheet)m_objWorkSheets[1];
 try
          {
              m_objExcel.Save("f:129.xls");
          }
          catch (Exception e)
          {
             
          }
          finally {
              m_objWorkBooks.Close();
              m_objExcel.Quit();
          }

------ 操作单元格 单元格以横坐标和纵坐标进行导航

在代码一try{}catch(){}之前加入以下代码

 (代码片段2)

  m_objExcel.Cells[1, 1] = "建筑节能评估计算报告书";//第一行第一列文赋值

 ------合并单元格(在代码一try{}catch(){}之前加入以下代码)

 

 m_objExcel.Cells[1, 1] = "建筑节能评估计算报告书";
            Excel.Range range = m_objExcel.get_Range(m_objExcel.Cells[1, 1], m_objExcel.Cells[1, 10]);
            range.Merge(Type.Missing);//合并单元格

 ---操作字体大小,颜色,单元格背景色。边框颜色等(在代码一try{}catch(){}之前加入以下代码)

 

 

 

m_objExcel.Cells[1, 1] = "建筑节能评估计算报告书";
            Excel.Range range = m_objExcel.get_Range(m_objExcel.Cells[1, 1], m_objExcel.Cells[1, 10]);
            range.Merge(Type.Missing);//合并单元格
 range.Font.Size = 25;//字号
            range.HorizontalAlignment = Excel.Constants.xlCenter; //居中对齐
            range.Font.Bold = 17;//字体大小
          //  range.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//边框
          //  range.Borders.Color = ColorTranslator.ToOle(Color.Red);//边框颜色

            //range.Interior.ColorIndex = 34;背景色

 

 

  • dll.rar (166.8 KB)
  • 下载次数: 373
分享到:
评论
1 楼 fscyr 2010-06-05  
如果Excel格式固定,只是数据行数变动的话,可直接输出成xml的文本格式。

            StreamWriter writer1 = new StreamWriter(fn, false);
            writer1.WriteLine("<?xml version=\"1.0\"?>");
            writer1.WriteLine("<?mso-application progid=\"Excel.Sheet\"?>");
            writer1.WriteLine("<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"");
            writer1.WriteLine("xmlns:o=\"urn:schemas-microsoft-com:office:office\"");
            writer1.WriteLine("xmlns:x=\"urn:schemas-microsoft-com:office:excel\"");
            writer1.WriteLine("xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"");
            writer1.WriteLine("xmlns:html=\"http://www.w3.org/TR/REC-html40\">");
            writer1.WriteLine("<DocumentProperties xmlns=\"urn:schemas-microsoft-com:office:office\">");
            writer1.WriteLine("<Author>Mark</Author>");
            writer1.WriteLine("<LastAuthor>Mark</LastAuthor>");
            writer1.WriteLine("<Created>2006-04-03T07:39:06Z</Created>");
            writer1.WriteLine("<Company>SEALTECH</Company>");
            writer1.WriteLine("<Version>11.6568</Version>");
            writer1.WriteLine("</DocumentProperties>");
            writer1.WriteLine("<ExcelWorkbook xmlns=\"urn:schemas-microsoft-com:office:excel\">");
            writer1.WriteLine("<WindowHeight>10020</WindowHeight>");
            writer1.WriteLine("<WindowWidth>16035</WindowWidth>");
            writer1.WriteLine("<WindowTopX>0</WindowTopX>");
            writer1.WriteLine("<WindowTopY>120</WindowTopY>");
            writer1.WriteLine("<ProtectStructure>False</ProtectStructure>");
            writer1.WriteLine("<ProtectWindows>False</ProtectWindows>");
            writer1.WriteLine("</ExcelWorkbook>");
            writer1.WriteLine("<Styles>");
            writer1.WriteLine("<Style ss:ID=\"Default\" ss:Name=\"Normal\">");
            writer1.WriteLine("<Alignment ss:Vertical=\"Center\"/>");
            writer1.WriteLine("<Borders/>");
            writer1.WriteLine("<Font ss:FontName=\"宋体\" x:CharSet=\"134\" ss:Size=\"12\"/>");
            writer1.WriteLine("<Interior/>");
            writer1.WriteLine("<NumberFormat/>");
            writer1.WriteLine("<Protection/>");
            writer1.WriteLine("</Style>");
            writer1.WriteLine("<Style ss:ID=\"s21\">");
            writer1.WriteLine("<NumberFormat ss:Format=\"@\"/>");
            writer1.WriteLine("</Style>");
            writer1.WriteLine("<Style ss:ID=\"s23\">");
            writer1.WriteLine("<Alignment ss:Horizontal=\"Left\" ss:Vertical=\"Center\"/>");
            writer1.WriteLine("</Style>");
            writer1.WriteLine("<Style ss:ID=\"s24\">");
            writer1.WriteLine("<Alignment ss:Horizontal=\"Left\" ss:Vertical=\"Center\"/>");
            writer1.WriteLine("<NumberFormat ss:Format=\"Short Date\"/>");
            writer1.WriteLine("</Style>");
            writer1.WriteLine("</Styles>");
            writer1.WriteLine("<Worksheet ss:Name=\"Sheet1\">");
            writer1.WriteLine("<Table ss:ExpandedColumnCount=\"7\" ss:ExpandedRowCount=\""
                + (this.BindingContext[this.dataGrid1.DataSource, this.dataGrid1.DataMember].Count + 1).ToString()
                + "\" x:FullColumns=\"1\"");
            writer1.WriteLine("x:FullRows=\"1\" ss:DefaultColumnWidth=\"54\" ss:DefaultRowHeight=\"14.25\">");
            writer1.WriteLine("<Column ss:Width=\"21\"/>");
            writer1.WriteLine("<Column ss:StyleID=\"s21\" ss:Width=\"96.75\"/>");
            writer1.WriteLine("<Column ss:Width=\"39\"/>");
            writer1.WriteLine("<Column ss:Width=\"270\"/>");
            writer1.WriteLine("<Column ss:Width=\"57\"/>");
            writer1.WriteLine("<Column ss:Width=\"45\"/>");
            writer1.WriteLine("<Column ss:StyleID=\"s23\" ss:Width=\"83.25\"/>");
            writer1.WriteLine("<Row>");
            writer1.WriteLine("<Cell ss:Index=\"2\"><Data ss:Type=\"String\">貨品編號</Data></Cell>");
            writer1.WriteLine("<Cell><Data ss:Type=\"String\">系列</Data></Cell>");
            writer1.WriteLine("<Cell><Data ss:Type=\"String\">簡要説明</Data></Cell>");
            writer1.WriteLine("<Cell><Data ss:Type=\"String\">存儲貨位</Data></Cell>");
            writer1.WriteLine("<Cell><Data ss:Type=\"String\">庫存</Data></Cell>");
            writer1.WriteLine("<Cell><Data ss:Type=\"String\">最後變動日期</Data></Cell>");
            writer1.WriteLine("</Row>");
            for (int i = 0; i < this.BindingContext[this.dataGrid1.DataSource, this.dataGrid1.DataMember].Count; i++)
            {
                writer1.WriteLine("<Row>");
                writer1.WriteLine("<Cell><Data ss:Type=\"String\">" + this.dataGrid1[i, 0].ToString() + "</Data></Cell>");
                writer1.WriteLine("<Cell><Data ss:Type=\"String\">" + this.dataGrid1[i, 1].ToString() + "</Data></Cell>");
                writer1.WriteLine("<Cell><Data ss:Type=\"String\">" + this.dataGrid1[i, 2].ToString() + "</Data></Cell>");
                writer1.WriteLine("<Cell><Data ss:Type=\"String\">" + this.dataGrid1[i, 3].ToString() + "</Data></Cell>");
                writer1.WriteLine("<Cell><Data ss:Type=\"String\">" + this.dataGrid1[i, 4].ToString() + "</Data></Cell>");
                writer1.WriteLine("<Cell><Data ss:Type=\"Number\">" + this.dataGrid1[i, 5].ToString() + "</Data></Cell>");
                writer1.WriteLine("<Cell ss:StyleID=\"s24\"><Data ss:Type=\"DateTime\">" + String.Format("{0:s}", this.dataGrid1[i, 6]) + "</Data></Cell>");
                writer1.WriteLine("</Row>");
            }
            writer1.WriteLine("</Table>");
            writer1.WriteLine("<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");
            writer1.WriteLine("<Selected/>");
            writer1.WriteLine("<ProtectObjects>False</ProtectObjects>");
            writer1.WriteLine("<ProtectScenarios>False</ProtectScenarios>");
            writer1.WriteLine("</WorksheetOptions>");
            writer1.WriteLine("</Worksheet>");
            writer1.WriteLine("<Worksheet ss:Name=\"Sheet2\">");
            writer1.WriteLine("<Table ss:ExpandedColumnCount=\"0\" ss:ExpandedRowCount=\"0\" x:FullColumns=\"1\"");
            writer1.WriteLine("x:FullRows=\"1\" ss:DefaultColumnWidth=\"54\" ss:DefaultRowHeight=\"14.25\"/>");
            writer1.WriteLine("<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");
            writer1.WriteLine("<ProtectObjects>False</ProtectObjects>");
            writer1.WriteLine("<ProtectScenarios>False</ProtectScenarios>");
            writer1.WriteLine("</WorksheetOptions>");
            writer1.WriteLine("</Worksheet>");
            writer1.WriteLine("<Worksheet ss:Name=\"Sheet3\">");
            writer1.WriteLine("<Table ss:ExpandedColumnCount=\"0\" ss:ExpandedRowCount=\"0\" x:FullColumns=\"1\"");
            writer1.WriteLine("x:FullRows=\"1\" ss:DefaultColumnWidth=\"54\" ss:DefaultRowHeight=\"14.25\"/>");
            writer1.WriteLine("<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");
            writer1.WriteLine("<ProtectObjects>False</ProtectObjects>");
            writer1.WriteLine("<ProtectScenarios>False</ProtectScenarios>");
            writer1.WriteLine("</WorksheetOptions>");
            writer1.WriteLine("</Worksheet>");
            writer1.WriteLine("</Workbook>");
            writer1.Close();

相关推荐

    C#导出excel文件

    总结来说,C#导出Excel文件涉及选择合适的库,如EPPlus,创建Excel包,添加工作表,以及将数据写入工作表。这个过程可以适应各种数据源和数据结构,使得C#成为处理Excel文件的强大工具。在实际应用中,可以根据具体...

    C#导出Excel 导出PDF

    首先,我们来看C#导出Excel的实现。Excel文件通常以`.xlsx`或`.xls`格式存储,C#可以借助Microsoft Office Interop库直接操作Excel对象,但这要求目标机器上安装了Office。另一种更灵活且无需依赖Office的方法是使用...

    C#导出Excel复杂表头解决方案

    标题"**C#导出Excel复杂表头解决方案**"涉及的是在C#应用程序中如何高效地创建包含复杂结构的Excel表头,这在数据报告、数据分析或自动化办公场景中非常常见。复杂表头可能包括多级标题、合并单元格、自定义样式等。...

    C#导出EXCEL合并 字体颜色居中

    ### C#导出Excel并实现单元格合并及样式设置 #### 概述 在实际开发过程中,导出数据到Excel是常见的需求之一。而在导出过程中实现数据的合并以及字体颜色居中等功能,则是对用户体验的一种优化提升。本文将详细...

    C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法

    "C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法" 在导出Excel文件时,经常会遇到“文件格式与扩展名指定格式不一致”的问题,这是因为大多数人在导出Excel文件时,都是默认保存Excel的格式...

    C#导出Excel和图形.zip

    本压缩包“C#导出Excel和图形.zip”很可能包含一系列示例代码或教程,旨在帮助开发者学习如何在C#应用程序中生成Excel文件和图表。下面将详细探讨这个主题,以及相关的知识点。 1. **Excel导出**: - **NPOI库**:...

    C#导出 Excel和图形 Vs2010

    总的来说,"C#导出Excel和图形Vs2010"这个主题涵盖了使用C#编程语言在Visual Studio 2010环境下处理数据导出到Excel文件以及生成图形的基本技术。无论是通过Excel Interop还是第三方库,都可以实现高效、灵活的数据...

    c#导出excel支持多sheet导出,可自定义sheetName

    c#导出excel支持多sheet导出,可自定义sheetName,如有疑问请留言,或qq1574697828.c#导出excel支持多sheet导出,可自定义sheetName,如有疑问请留言。

    C#导出Excel,利用第三方控件,改变导出样式,字体等

    总的来说,使用第三方控件如myxls在C#中导出Excel,不仅提高了程序的可移植性,还提供了更多自定义样式和格式的可能性。这种方式对于那些需要大量生成Excel报表,或者对Excel样式有特殊要求的项目非常实用。在实际...

    c# 导出到Excel (C# winform)

    c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#) winform

    C# 导出EXCEL C# 导出EXCEL C# 导出EXCEL

    下面我们将深入探讨C#导出Excel的原理、方法和常见实践。 首先,C#导出Excel主要有两种方式:使用Microsoft Office Interop库(需在运行环境中安装Office)或使用第三方库。前者直接操作Excel应用程序对象模型,而...

    C# 导出excel表格(xls、xlsx两种格式)

    在C#编程环境中,导出Excel表格是一项常见的需求,尤其在数据处理和报告生成时。本文将详细讲解如何使用C#来实现Excel表格的导出,包括xls和xlsx两种常见格式。 首先,我们需要理解这两种格式的区别。Xls是Excel...

    C#导出Excel的代码

    ### C#导出Excel的代码知识点解析 #### 一、概述 在开发过程中,经常需要将数据导出到Excel文件中以便于用户查看或进一步处理。C# 提供了多种方式来实现这一功能,其中使用 ADO.NET 操作 Excel 文件是一种常见的...

    C#导出Excel并关闭进程解决方案

    C#导出Excel并关闭进程解决方案,因为项目导出EXCEL偶尔会报错,现共享解决方案。

    C#导出Excel 兼容各个版本的Excel

    C#操作Excel导出类,可以直接调用,兼容各个版本的Excel和WPS。

    C# 导出excel 实例代码

    首先,要理解C#导出Excel的基本原理。通常,我们可以使用两种主要的方式来完成这个任务:一是使用Microsoft Office Interop组件,二是使用第三方库。对于Interop组件,它直接与Excel应用程序进行交互,但缺点是需要...

    c#导出Excel

    ### C# 导出 Excel 的方法详解 在 IT 领域中,处理大量数据时经常需要将数据导出到 Excel 文件中以便于进一步分析或分享。C# 作为一种广泛使用的编程语言,提供了多种方式来实现这一功能。本文将详细介绍一种不依赖...

    C#导出Excel 例程和Dll

    目前C#导出Excel主要有八种方法(https://www.cnblogs.com/Brambling/p/6854731.html), 其中NPOI个人感觉是最好的, 好不容易找到完整Dll, 做了Demo, 给需要的朋友做参考.

    C#导出excel.rar

    本教程将基于提供的"C#导出excel.rar"压缩包,详细介绍如何使用C#语言来创建和导出Excel文件,包括所需的库、基本操作以及代码实现。 首先,我们需要引入一个能够处理Excel文件的库。在C#中,最常用的是`EPPlus`库...

Global site tag (gtag.js) - Google Analytics