C# 操作Excel大全

//引用Microsoft.Office.Interop.Excel.dll文件 

//添加using

using Microsoft.Office.Interop.Excel;

using Excel=Microsoft.Office.Interop.Excel;

//设置程序运行语言

System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture;

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

//创建Application

Excel.Application xlApp = new Excel.Application();

//设置是否显示警告窗体

excelApp.DisplayAlerts = false;

//设置是否显示Excel

excelApp.Visible = false;

//禁止刷新屏幕

excelApp.ScreenUpdating = false;

//根据路径path打开

Excel.Workbook xlsWorkBook = excelApp.Workbooks.Open(path, System.Type.Missing, System.Type.Missing, System.Type.Missing,

System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing,

System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);

//获取Worksheet对象

Excel.Worksheet xlsWorkSheet = (Worksheet)xlsWorkBook.Worksheets["sales plan"];

***获取最后一行、一列的两种方法***

//获取已用的范围数据

int rowsCount = xlsWorkSheet.UsedRange.Rows.Count;

int colsCount = xlsWorkSheet.UsedRange.Columns.Count;

int rowsCount = xlsWorkSheet.get_Range("A65536", "A65536").get_End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row;

int colsCount = xlsWorkSheet.get_Range("ZZ1", "ZZ1").get_End(Microsoft.Office.Interop.Excel.XlDirection.xlToLeft).Column;

***将Excel数据存入二维数组***

//rowsCount:最大行    colsCount:最大列

Microsoft.Office.Interop.Excel.Range c1 = (Microsoft.Office.Interop.Excel.Range)xlsWorkSheet.Cells[1, 1];

Microsoft.Office.Interop.Excel.Range c2 = (Microsoft.Office.Interop.Excel.Range)xlsWorkSheet.Cells[rowsCount, colsCount];

Range rng = (Microsoft.Office.Interop.Excel.Range)xlsWorkSheet.get_Range(c1, c2);

object[,] exceldata = (object[,])rng.get_Value(Microsoft.Office.Interop.Excel.XlRangeValueDataType.xlRangeValueDefault);

//在第一列的左边插入一列

Excel.Range xlsColumns = (Excel.Range)xlsWorkSheet.Columns[1, System.Type.Missing];

xlsColumns.Insert(XlInsertShiftDirection.xlShiftToRight, Type.Missing);

//xlsSheetTemplateMajor_Meisai.Cells.get_Range(xlsSheetTemplateMajor_Meisai.Cells[1, 1], xlsSheetTemplateMajor_Meisai.Cells[65535, 1]).Insert(Type.Missing, Type.Missing);

 Excel.Range rng;

            rng = worksheet.get_Range("A:A", "A:A");

            rng.Insert(Excel.XlDirection.xlToRight, Excel.XlInsertFormatOrigin.xlFormatFromLeftOrAbove);

Excel.Range rng = (Microsoft.Office.Interop.Excel.Range)xlsWorkSheet.Columns[12, Type.Missing];

rng.Insert(XlInsertShiftDirection.xlShiftToRight, XlInsertFormatOrigin.xlFormatFromLeftOrAbove);

//删除行

Range deleteRng = (Range)xlsWorkSheetSapExcel.Rows[2, System.Type.Missing];

deleteRng.Delete(Excel.XlDeleteShiftDirection.xlShiftUp);

//删除一列数据

((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[1, 11]).Select();

((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[1, 11]).EntireColumn.Delete(0);

((Excel.Range)xlsSheetShareMajor_Meisai.Cells[1, 3]).EntireColumn.Delete (0);

            

//设置背景色为红色

xlsWorkSheet.get_Range("A1", "A1").Interior.ColorIndex = 3;

//设置Format属性    属性值可以通过在vba中录宏得到

Microsoft.Office.Interop.Excel.Range range1 = xlsWorkSheetAdd.get_Range("J1", "J65535");

range1.NumberFormat = "@";//文本格式

range1 = xlsWorkSheetAdd.get_Range("L1", "L65535");

range1.NumberFormat = "0.00";//保留两位小数

Excel.Range rng = xlsSheetShareMajor_Meisai.Columns["I", System.Type.Missing] as Excel.Range;

rng.NumberFormatLocal =@"yyyy/m/d";//设置日期格式

//替换

Range Drng = xlsWorkSheetTemplate.get_Range("D1", "D65535");

Drng.Replace(" ", "", XlLookAt.xlPart, XlSearchOrder.xlByColumns, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);

Drng.TextToColumns(Drng, Excel.XlTextParsingType.xlDelimited, Excel.XlTextQualifier.xlTextQualifierSingleQuote, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);

//分列处理 设置为文本

Range TextToColumnRng = xlsWorkSheet.get_Range("E1", "E65535");

xlsWorkSheet.get_Range("E1", "E65535").TextToColumns(TextToColumnRng, Excel.XlTextParsingType.xlDelimited, Excel.XlTextQualifier.xlTextQualifierSingleQuote, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);

//设置公式

rng = xlMergeFileWorkSheet.get_Range("D2", "D" + rowcount);//设置列范围

rng.Formula = @"=IF(RC[-3]=""H"",""Survivor"",""Donor"")";//设置公式   @的问题

//rng.NumberFormat = "$0.00";//设置格式

copyRng = xlsSheetTemplateMajor_Meisai.get_Range("N3", "N" + lastRowTemplate);

copyRng.Formula = "=VLOOKUP(RC[-12],AR残!C[-13]:C[-11],2,0)";

//通过行、列的索引获取值

string f = Convert.ToString(xlsSheetShareMajor_Meisai.get_Range(xlsSheetShareMajor_Meisai.Cells[2, 1], xlsSheetShareMajor_Meisai.Cells[2,1]).Value2);

//筛选

//确定筛选范围

D1_rng = D1_TemSheet.Cells.get_Range(D1_TemSheet.Cells[1, 1], D1_TemSheet.Cells[1, 50]);

//执行筛选动作

rng.AutoFilter(5, "S", Microsoft.Office.Interop.Excel.XlAutoFilterOperator.xlFilterValues, Type.Missing, true);

rng.AutoFilter(6, "H", Microsoft.Office.Interop.Excel.XlAutoFilterOperator.xlOr, "F", true);

D1_rng.AutoFilter(D1_Column + 2, "#N/A", Microsoft.Office.Interop.Excel.XlAutoFilterOperator.xlFilterValues,"#N/A",false);

//复制粘贴

D2_rng.Copy(Type.Missing);

D2_TemSheet.Cells.get_Range(D2_TemSheet.Cells[2, (D2_Column + 1)], D2_TemSheet.Cells[2, (D2_Column + 1)]).PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);

//Find查找

rng = mySheet.get_Range("A1", "IV10").Find(arrLabel[j], Type.Missing,

                        Microsoft.Office.Interop.Excel.XlFindLookIn.xlValues, Microsoft.Office.Interop.Excel.XlLookAt.xlWhole,

                        Microsoft.Office.Interop.Excel.XlSearchOrder.xlByRows,

                        Microsoft.Office.Interop.Excel.XlSearchDirection.xlNext, false, Type.Missing, Type.Missing);

//文字占满单元格

range.EntireColumn.AutoFit();

//另存

xlsWorkBook.SaveAs(FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

***关闭对象***

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsWorkSheet);

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsWorkBook);

excelApp.Quit();

Kill(excelApp);//调用方法关闭进程

GC.Collect();

/// <summary>

/// 关闭Excel进程

/// </summary>

public class KeyMyExcelProcess

{

    [DllImport("User32.dll", CharSet = CharSet.Auto)]

    public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);

    public static void Kill(Microsoft.Office.Interop.Excel.Application excel)

    {

        try

        {

            IntPtr t = new IntPtr(excel.Hwnd);   //得到这个句柄,具体作用是得到这块内存入口

            int k = 0;

            GetWindowThreadProcessId(t, out k);   //得到本进程唯一标志k

            System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);   //得到对进程k的引用

            p.Kill();     //关闭进程k

        }

        catch (System.Exception ex)

        {

            throw ex;

        }

    }

}

    

    

//关闭打开的Excel方法

 public void CloseExcel(Microsoft.Office.Interop.Excel.Application ExcelApplication, Microsoft.Office.Interop.Excel.Workbook ExcelWorkbook)

{

   ExcelWorkbook.Close(false, Type.Missing, Type.Missing);

   ExcelWorkbook = null;

   ExcelApplication.Quit();

   GC.Collect();

   KeyMyExcelProcess.Kill(ExcelApplication);

}

原文地址:https://www.cnblogs.com/jeanming/p/11427714.html

时间: 2024-11-05 21:47:25

C# 操作Excel大全的相关文章

asp.net 操作Excel大全

asp.net 操作Excel大全 转:http://www.cnblogs.com/zhangchenliang/archive/2011/07/21/2112430.html 我们在做excel资料的时候,通常有以下方法. 一.导入导出excel常用方法: 1.用查询表的方式查询并show在数据集控件上.   代码 public static string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =C:\\08.

Delphi操作Excel大全

转自  上帝的鱼--专栏  cdsn 个人收藏:Delphi  控制Excel(一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObject( 'Excel.Application' );1) 显示当前窗口:ExcelApp.Visible := True;2) 更改 Excel 标题栏:ExcelApp.Caption := '应用程序调用 Microsoft Excel';3) 添加新

VB操作EXCEL文件大全

Private Sub writeToExcel(strTmp1() As String, colTmp1 As Collection) ' '    Dim tmp1 Dim i1 As Integer, intCol As Integer, intRow As Integer Dim xlApp As New Excel.Application Dim xlBook As New Excel.Workbook Dim xlSheet As New Excel.Worksheet Dim st

Ruby操作Excel的方法与技巧大全

测试工作中,批量的数据通常会放到excel表格中,测试输出的数据写回表格中,这样输入输出易于管理,同时清晰明了 使用ruby来操作excel文件首先需要在脚本里包含以下语句 require'win32ole' 把win32ole包含进来后,就可以通过和windows下的excelapi进行交互来对excel文件进行读写了. 打开excel文件,对其中的sheet进行访问: 1 excel =WIN32OLE::new('excel.Application') 2 workbook =excel.

POI操作Excel

Excel简介 一个excel文件就是一个工作簿workbook,一个工作簿中可以创建多张工作表sheet,而一个工作表中包含多个单元格Cell,这些单元格都是由列(Column)行(Row)组成,列用大写英文字母表示,从A开始到Z共26列,然后再从AA到AZ又26列,再从BA到BZ再26列以此类推.行则使用数字表示,例如:A3 表示第三行第一列,E5表示第五行第五列. POI工具包 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 9

java 操作 Excel,java导出excel

WritableWorkbook out = null; try { response.getServletResponse().reset(); ((HttpServletResponse) response.getServletResponse()).setHeader("Content-Disposition", "attachment;filename=export.xls"); response.getServletResponse().setConten

python操作excel

python操作exce的方式: 使用win32com 使用xlrd(读excel).xlwt(写excel) 1.使用win32com方式 代码: # coding=utf-8 from win32com.client import Dispatch import pywintypes ''' 查看excel最大行数和列数 打开一个空白新建EXCEL表格,按CTRL+下箭头,可以查看到最大行数:按CTRL+右箭头, 可以查看到最大列标(若想显示列数,可在最右一列的某单元格中输入=column(

java使用POI操作excel文件,实现批量导出,和导入

一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Excel 95及以后的版本,即可操作后缀为 .xls 和 .xlsx两种格式的excel. POI全称 Poor Obfuscation Implementation,直译为"可怜的模糊实现",利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:htt

POI组件:POI操作Excel

1.Excel简介 一个excel文件就是一个工作簿workbook,一个工作簿中可以创建多张工作表sheet,而一个工作表中包含多个单元格Cell,这些单元格都是由列(Column)行(Row)组成,列用大写英文字母表示,从A开始到Z共26列,然后再从AA到AZ又26列,再从BA到BZ再26列以此类推.行则使用数字表示,例如:A3 表示第三行第一列,E5表示第五行第五列. 2.POI工具包 POI全称 Poor Obfuscation Implementation,直译为"可怜的模糊实现&qu