- 浏览: 436901 次
- 性别:
- 来自: 唐山
文章分类
最新评论
-
hautbbs:
谢谢分享!
ASP.NET 导出Excel 和csv -
hautbbs:
感谢分享!
ASP.NET 导出Excel乱码的终极解决 -
wyf:
zcl920 写道只能说 看不懂。要发就发全 取一段出来 有什 ...
图片上绘制文字换行处理 -
zcl920:
只能说 看不懂。要发就发全 取一段出来 有什么用。
图片上绘制文字换行处理 -
380086154:
有用,谢谢。
js比较日期
//1.添加引用-〉com-〉microsoft excel 11.0 //2.若出现错误:命名空间“Microsoft.Office”中不存在类型或命名空间名称“Interop”(是缺少程序集引用吗?) //解决方法:先删除引用中的Excel,然后找到文件Microsoft.Office.Interop.Excel.dll,手动添加该文件的引用 using System; using System.Data; using System.Reflection; using System.IO; using Microsoft.Office.Core; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; namespace Wage.Common { /// <summary> /// 作者 Li Aimin (原创) /// 功能描述:C#对Excel报表进行操作 /// 创建时间:2006-01-17, 修改时间:2007-1-14 /// 说明:在工程中需要添加 Excel11.0对象库的引用(Office 2000为Excel9.0,Office XP为Excel10.0); /// 需要在Dcom中配置Excel应用程序的权限; /// 服务器需要安装Office2003 /// </summary> public class ExcelLib { //http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_wrcore/html/wrgrfexcelapplicationobject.asp #region Variables private Excel.Application excelApplication = null; private Excel.Workbooks excelWorkBooks = null; private Excel.Workbook excelWorkBook = null; private Excel.Worksheet excelWorkSheet = null; private Excel.Range excelRange = null;//Excel Range Object,多种用途 private Excel.Range excelCopySourceRange = null;//Excel Range Object private int excelActiveWorkSheetIndex; //活动工作表索引 private string excelOpenFileName = ""; //操作Excel的路径 private string excelSaveFileName = ""; //保存Excel的路径 #endregion #region Properties public int ActiveSheetIndex { get { return excelActiveWorkSheetIndex; } set { excelActiveWorkSheetIndex = value; } } public string OpenFileName { get { return excelOpenFileName; } set { excelOpenFileName = value; } } public string SaveFileName { get { return excelSaveFileName; } set { excelSaveFileName = value; } } #endregion // //-------------------------------------------------------------------------------------------------------- /// <summary> /// 构造函数; /// </summary> public ExcelLib() { excelApplication = null;//Excel Application Object excelWorkBooks = null;//Workbooks excelWorkBook = null;//Excel Workbook Object excelWorkSheet = null;//Excel Worksheet Object ActiveSheetIndex = 1; //默认值活动工作簿为第一个;设置活动工作簿请参阅SetActiveWorkSheet() } /// <summary> /// 以excelOpenFileName为模板新建Excel文件 /// </summary> public bool OpenExcelFile() { if (excelApplication != null) CloseExcelApplication(); //检查文件是否存在 if (excelOpenFileName == "") { throw new Exception("请选择文件!"); } if (!File.Exists(excelOpenFileName)) { throw new Exception(excelOpenFileName + "该文件不存在!");//该异常如何处理,由什么处理???? } try { excelApplication = new Excel.ApplicationClass(); excelWorkBooks = excelApplication.Workbooks; excelWorkBook = ((Excel.Workbook)excelWorkBooks.Open(excelOpenFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value)); excelWorkSheet = (Excel.Worksheet)excelWorkBook.Worksheets[excelActiveWorkSheetIndex]; excelApplication.Visible = false; return true; } catch (Exception e) { CloseExcelApplication(); MessageBox.Show("(1)没有安装Excel 2003;(2)或没有安装Excel 2003 .NET 可编程性支持;\n详细信息:" +e.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); //throw new Exception(e.Message); return false; } } /// <summary> /// 读取一个Cell的值 /// </summary> /// <param name="CellRowID">要读取的Cell的行索引</param> /// <param name="CellColumnID">要读取的Cell的列索引</param> /// <returns>Cell的值</returns> public string getOneCellValue(int CellRowID, int CellColumnID) { if (CellRowID <= 0) { throw new Exception("行索引超出范围!"); } string sValue = ""; try { sValue = ((Excel.Range)excelWorkSheet.Cells[CellRowID, CellColumnID]).Text.ToString(); } catch (Exception e) { CloseExcelApplication(); throw new Exception(e.Message); } return (sValue); } /// <summary> /// 读取一个连续区域的Cell的值(矩形区域,包含一行或一列,或多行,多列),返回一个一维字符串数组。 /// </summary> /// <param name="StartCell">StartCell是要写入区域的左上角单元格</param> /// <param name="EndCell">EndCell是要写入区域的右下角单元格</param> /// <returns>值的集合</returns> public string[] getCellsValue(string StartCell, string EndCell) { string[] sValue = null; //try //{ excelRange = (Excel.Range)excelWorkSheet.get_Range(StartCell, EndCell); sValue = new string[excelRange.Count]; int rowStartIndex = ((Excel.Range)excelWorkSheet.get_Range(StartCell, StartCell)).Row; //起始行号 int columnStartIndex = ((Excel.Range)excelWorkSheet.get_Range(StartCell, StartCell)).Column; //起始列号 int rowNum = excelRange.Rows.Count; //行数目 int columnNum = excelRange.Columns.Count; //列数目 int index = 0; for (int i = rowStartIndex; i < rowStartIndex + rowNum; i++) { for (int j = columnStartIndex; j < columnNum + columnStartIndex; j++) { //读到空值null和读到空串""分别处理 sValue[index] = ((Excel.Range)excelWorkSheet.Cells[i, j]).Text.ToString(); index++; } } //} //catch (Exception e) //{ // CloseExcelApplication(); // throw new Exception(e.Message); //} return (sValue); } /// <summary> /// 读取所有单元格的数据(矩形区域),返回一个datatable.假设所有单元格靠工作表左上区域。 /// </summary> public DataTable getAllCellsValue() { int columnCount = getTotalColumnCount(); int rowCount = getTotalRowCount(); DataTable dt = new DataTable(); //设置datatable列的名称 for (int columnID = 1; columnID <= columnCount; columnID++) { dt.Columns.Add(((Excel.Range)excelWorkSheet.Cells[1, columnID]).Text.ToString()); } for (int rowID = 2; rowID <= rowCount; rowID++) { DataRow dr = dt.NewRow(); for (int columnID = 1; columnID <= columnCount; columnID++) { dr[columnID - 1] = ((Excel.Range)excelWorkSheet.Cells[rowID, columnID]).Text.ToString(); //读到空值null和读到空串""分别处理 } dt.Rows.Add(dr); } return (dt); } public int getTotalRowCount() {//当前活动工作表中有效行数(总行数) int rowsNumber = 0; try { while (true) { if (((Excel.Range)excelWorkSheet.Cells[rowsNumber + 1, 1]).Text.ToString().Trim() == "" && ((Excel.Range)excelWorkSheet.Cells[rowsNumber + 2, 1]).Text.ToString().Trim() == "" && ((Excel.Range)excelWorkSheet.Cells[rowsNumber + 3, 1]).Text.ToString().Trim() == "") break; rowsNumber++; } } catch { return -1; } return rowsNumber; } /// <summary> /// 当前活动工作表中有效列数(总列数) /// </summary> /// <param></param> public int getTotalColumnCount() { int columnNumber = 0; try { while (true) { if (((Excel.Range)excelWorkSheet.Cells[1, columnNumber + 1]).Text.ToString().Trim() == "" && ((Excel.Range)excelWorkSheet.Cells[1, columnNumber + 2]).Text.ToString().Trim() == "" && ((Excel.Range)excelWorkSheet.Cells[1, columnNumber + 3]).Text.ToString().Trim() == "") break; columnNumber++; } } catch { return -1; } return columnNumber; } /// <summary> /// 向一个Cell写入数据 /// </summary> /// <param name="CellRowID">CellRowID是cell的行索引</param> /// <param name="CellColumnID">CellColumnID是cell的列索引</param> ///<param name="Value">要写入该单元格的数据值</param> public void setOneCellValue(int CellRowID, int CellColumnID, string Value) { try { excelRange = (Excel.Range)excelWorkSheet.Cells[CellRowID, CellColumnID]; excelRange.Value2 = Value;//Value2? //Gets or sets the value of the NamedRange control. //The only difference between this property and the Value property is that Value2 is not a parameterized property. excelRange = null; } catch (Exception e) { CloseExcelApplication(); throw new Exception(e.Message); } } /// <summary> /// 设置活动工作表 /// </summary> /// <param name="SheetIndex">要设置为活动工作表的索引值</param> public void SetActiveWorkSheet(int SheetIndex) { if (SheetIndex <= 0) { throw new Exception("索引超出范围!"); } try { ActiveSheetIndex = SheetIndex; excelWorkSheet = (Excel.Worksheet)excelWorkBook.Worksheets[ActiveSheetIndex]; } catch (Exception e) { CloseExcelApplication(); throw new Exception(e.Message); } } /// <summary> /// 向连续区域一次性写入数据;只有在区域连续和写入的值相同的情况下可以使用方法 /// </summary> /// <param name="StartCell">StartCell是要写入区域的左上角单元格</param> /// <param name="EndCell">EndCell是要写入区域的右下角单元格</param> /// <param name="Value">要写入指定区域所有单元格的数据值</param> public void setCellsValue(string StartCell, string EndCell, string Value) { try { excelRange = excelWorkSheet.get_Range(StartCell, EndCell); excelRange.Value2 = Value; excelRange = null; } catch (Exception e) { CloseExcelApplication(); throw new Exception(e.Message); } }
发表评论
-
登录时记住用户名密码的实现方式
2019-06-12 15:11 3039登录的时候记住用户 ... -
CAS 实现单点登录 .NET MVC
2016-05-24 17:14 1134http://www.cnblogs.com/woxpp/p ... -
.NET开发邮件发送功能的全面教程(含邮件组件源码)
2015-03-31 09:43 1174原文地址:http://www.cnblogs.com/he ... -
开发Web组合
2015-01-04 11:39 6151、数据库操作 ORM-Dapper 2、前台界面布局采 ... -
基于 Bootstrap 构建的网站
2014-12-14 14:12 640文档,下载地址:http://v3.bootcss.com ... -
iis8 默认不支持svc解决方法
2014-09-18 18:57 782以下内容对于使用WIN2012 部署V9的时候使用。 ... -
C# 连接Oracle(利用ODP.net,不安装oracle客户端)
2014-07-11 09:37 1698C# 连接Oracle(利用ODP.net,不安装oracl ... -
C# Attribute 特性,过期特性
2014-05-27 15:18 1852通过下列过程将属性应用到代码元素。 通过从 .NE ... -
.NET画实时直方图
2011-12-30 09:37 923using System; using System.Col ... -
设置combobx选中项
2011-12-21 15:20 1036cbRole.SelectedIndex = cbRole.I ... -
文档树状结构化目录管理方法
2011-12-20 09:50 2202本文适用于附件(各类文档、图片和压缩包等,下同)比较多的 ... -
.StringTemplate替换模板
2011-11-03 10:19 1252官方下载 www.StringTemplate. ... -
WCF-IErrorHandler
2011-10-11 16:30 1058使用 IErrorHandler 接口,我们可以更深入地 ... -
ADODB.Stream instead of Scripting.FileSystemObject.
2011-07-04 08:55 1249In a Silverlight 4 OOB App (eve ... -
Scripting.FileSystemObject对象的详细技巧指南
2011-07-03 23:39 1052Scripting.FileSystemObject对象的 ... -
Stream 和 byte[] 之间的转换
2011-07-02 16:52 1078/* - - - - - - - - - - - - - ... -
常用正则表达式
2011-06-15 20:17 798正则表达式用于字符 ... -
DynamicMethod 类
2011-05-11 22:51 1165public delegate String MyMetho ... -
一个通用的快速反射方法(A General Fast Method Invoker)
2011-04-13 22:01 1532普通反射方法 MethodInfo methodIn ... -
C#操作IIS(转)可以写一个工具自己配置网站
2011-03-24 21:08 2271using System; using System.Dir ...
相关推荐
C#的,winform的,这是我自己写的一个c#操作excel的例子,其中包括数据操作,字体,格式,单元格等操作,还有一个生成柱状图的方法,所有的方法都在ExcelHelper.cs类里,点击Form1窗体里的按钮可以看到各种操作的...
### C#操作Excel的几种方法 #### 概述 在.NET框架中,通过C#语言进行Excel文件的操作是一项常见的需求,比如数据导入导出、报表生成等场景。本文将详细介绍几种利用C#来操作Excel的方法,并重点分析一种基于`...
本案例聚焦于"C#操作Excel",这涉及到如何使用C#与Microsoft Office的Excel应用程序进行交互,以实现数据读取、写入、修改等操作。在实际工作中,这种技能对于数据处理、报表生成和自动化任务至关重要。 C#操作...
### C# 操作Excel基础 在C#中处理Excel文档通常涉及到几个关键类:`Workbook`, `Worksheet`, 和 `Application`。这些类提供了操作Excel文档所需的大部分功能。 #### 创建Excel Application实例 ```csharp private ...
本文将深入探讨C#操作Excel文件的相关知识点。 首先,C#本身并不直接支持Excel操作,而是需要借助第三方库或者.NET Framework中的组件来实现。最常见的库之一是Microsoft.Office.Interop.Excel,它是.NET Framework...
在C#中,操作Excel是一项常见的任务,尤其在数据分析和报表生成方面。在这个场景中,开发者面临的问题是如何根据动态的数据生成美观且...通过不断学习和实践,可以提高C#操作Excel的技能,创建更加复杂和美观的报表。
### C#操作Excel知识点详解 #### 一、概述 在.NET框架中,无论是Web应用程序还是桌面应用程序,特别是在涉及数据库操作的管理系统中,经常会遇到需要读取Excel数据或将数据导出到Excel的情况。本文将详细介绍几种...
总结一下,C#操作Excel可以选择多种途径,包括Interop库和第三方库如EPPlus。在处理大数据时,推荐使用后者,因为它更高效且不依赖于Office的本地安装。此外,通过模板处理和样式管理,可以轻松创建专业且格式化的...
标题 "C#操作Excel源代码" 提供了一个关键信息,即使用C#编程语言来处理Microsoft Excel文件。在C#中,我们可以利用.NET框架提供的Microsoft.Office.Interop.Excel命名空间,这使得我们能够通过COM组件与Excel应用...
总的来说,C#操作Excel的代码示例可以帮助开发者在不依赖完整Office环境的情况下,高效地进行数据处理。无论是读取现有数据还是生成新的Excel报告,这些类和方法都能提供必要的功能。通过学习和应用这些示例,开发者...
### C#操作Excel知识点详解 #### 一、引言与背景 Excel作为微软办公套件中的重要组成部分,凭借其强大的功能和友好的用户界面而深受广大用户的喜爱。特别是在数据分析、财务管理等领域,Excel更是不可或缺的工具之...
首先,要进行C#操作Excel,我们需要引用一个库来处理Excel文件。在.NET框架中,常常使用`Microsoft.Office.Interop.Excel`库,它是Office Interop组件的一部分,允许与Office应用程序进行交互。不过,这个库需要在...
C# 操作Excel大全 c//删除行 //删除一列数据 //设置背景色 //设置Format属性 等
C#操作Excel的方法汇总 C#操作Excel的方法汇总是指使用C#语言对Excel进行读取、写入、编辑和导出等操作的方法汇总。这些方法可以帮助开发者快速、高效地完成Excel相关的任务。 一、使用OleDbConnection读取Excel...