当前位置: 首页 > news >正文

c#操作excel表格

     c#操作excel表格有很多方法,本文介绍的是基于Interop.Excel方式。该方式并不是winform操作excel的最好方法,本文介绍该方法主要是为一些仍有需求的小伙伴。建议有兴趣的小伙伴可以看一下miniexcel,该方法更简洁高效。

一、首先需要下载interop.excel库,在“管理NuGET程序包中下载

二、包含头文件

using Excel = Microsoft.Office.Interop.Excel;

三、操作excel

本文把相关读写excel封装成函数,具体如下:

1、往某个单元格写入数据

public bool WriteToCell(string openAddr,string sheet,int row,int column,string value){try{Excel.Application excelAppWrite = null;Excel.Workbook workbookWrite = null;Excel.Worksheet worksheetWrite = null;excelAppWrite = new Excel.Application();workbookWrite = excelAppWrite.Workbooks.Open(openAddr);worksheetWrite = workbookWrite.Sheets[sheet];Excel.Range xlRange = worksheetWrite.UsedRange;xlRange.Cells[row, column] = value;// 关闭工作簿并退出Excel应用程序workbookWrite.Close(true);excelAppWrite.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheetWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(excelAppWrite);worksheetWrite = null;workbookWrite = null;excelAppWrite = null;GC.Collect();return true;}catch (Exception ex){            return false;}}

2、往excel表最后一行写入数据

public bool WriteToRow(string openAddr, string sheet,string[] valueArray){try{Excel.Application excelAppWrite = null;Excel.Workbook workbookWrite = null;Excel.Worksheet worksheetWrite = null;excelAppWrite = new Excel.Application();workbookWrite = excelAppWrite.Workbooks.Open(openAddr);worksheetWrite = workbookWrite.Sheets[sheet];Excel.Range xlRange = worksheetWrite.UsedRange;int numberOfRows = xlRange.Rows.Count;for (int i = 0; i < valueArray.Length; i++){xlRange.Cells[numberOfRows + 1, i + 1] = valueArray[i];}// 关闭工作簿并退出Excel应用程序workbookWrite.Close(true);excelAppWrite.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheetWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(excelAppWrite);worksheetWrite = null;workbookWrite = null;excelAppWrite = null;GC.Collect();return true;}catch (Exception ex){return false;}}

3、把数据库数据写入excel

 public bool WriteToExcel(string openAddr, string sheet, DataTable dataTable){try{Excel.Application excelAppWrite = null;Excel.Workbook workbookWrite = null;Excel.Worksheet worksheetWrite = null;excelAppWrite = new Excel.Application();workbookWrite = excelAppWrite.Workbooks.Open(openAddr);worksheetWrite = workbookWrite.Sheets[sheet];Excel.Range xlRange = worksheetWrite.UsedRange;int numberOfRows = xlRange.Rows.Count;for (int i = 0; i < dataTable.Rows.Count; i++){DataRow dataRow = dataTable.Rows[i];for (int j = 0; j < dataTable .Columns.Count; j++){xlRange.Cells[numberOfRows + i + 1, j + 1] = dataRow[j];}}// 关闭工作簿并退出Excel应用程序workbookWrite.Close(true);excelAppWrite.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheetWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(excelAppWrite);worksheetWrite = null;workbookWrite = null;excelAppWrite = null;GC.Collect();return true;}catch (Exception ex){return false;}}

4、读取某一个单元格数据

 public string ReadCell(string openAddr, string sheet, int row, int column){try{Excel.Application excelAppWrite = null;Excel.Workbook workbookWrite = null;Excel.Worksheet worksheetWrite = null;excelAppWrite = new Excel.Application();workbookWrite = excelAppWrite.Workbooks.Open(openAddr);worksheetWrite = workbookWrite.Sheets[sheet];Excel.Range xlRange = worksheetWrite.UsedRange;string cellValue = xlRange.Cells[row, column].Text.ToString();// 关闭工作簿并退出Excel应用程序workbookWrite.Close(true);excelAppWrite.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheetWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(excelAppWrite);worksheetWrite = null;workbookWrite = null;excelAppWrite = null;GC.Collect();return cellValue;}catch (Exception ex){return "";}}

5、读取最后一行数据

public List<string> ReadToRow(string openAddr, string sheet){List<string> valueArray = new List<string>();try{Excel.Application excelAppWrite = null;Excel.Workbook workbookWrite = null;Excel.Worksheet worksheetWrite = null;excelAppWrite = new Excel.Application();workbookWrite = excelAppWrite.Workbooks.Open(openAddr);worksheetWrite = workbookWrite.Sheets[sheet];Excel.Range xlRange = worksheetWrite.UsedRange;int numberOfRows = xlRange.Rows.Count;int numberOfColumn = xlRange.Columns.Count;for(int i = 0; i < numberOfColumn; i++){valueArray.Add(xlRange.Cells[numberOfRows, i + 1].Text.ToString());}// 关闭工作簿并退出Excel应用程序workbookWrite.Close(true);excelAppWrite.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheetWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(excelAppWrite);worksheetWrite = null;workbookWrite = null;excelAppWrite = null;GC.Collect();return valueArray;}catch (Exception ex){return valueArray;}}

最后给出详细代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Excel = Microsoft.Office.Interop.Excel;
using System.Data;namespace Test
{class InteropExcelHelper{//往某个单元格写入数据public bool WriteToCell(string openAddr,string sheet,int row,int column,string value){try{Excel.Application excelAppWrite = null;Excel.Workbook workbookWrite = null;Excel.Worksheet worksheetWrite = null;excelAppWrite = new Excel.Application();workbookWrite = excelAppWrite.Workbooks.Open(openAddr);worksheetWrite = workbookWrite.Sheets[sheet];Excel.Range xlRange = worksheetWrite.UsedRange;xlRange.Cells[row, column] = value;// 关闭工作簿并退出Excel应用程序workbookWrite.Close(true);excelAppWrite.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheetWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(excelAppWrite);worksheetWrite = null;workbookWrite = null;excelAppWrite = null;GC.Collect();return true;}catch (Exception ex){            return false;}}//往最后一行写入数据public bool WriteToRow(string openAddr, string sheet,string[] valueArray){try{Excel.Application excelAppWrite = null;Excel.Workbook workbookWrite = null;Excel.Worksheet worksheetWrite = null;excelAppWrite = new Excel.Application();workbookWrite = excelAppWrite.Workbooks.Open(openAddr);worksheetWrite = workbookWrite.Sheets[sheet];Excel.Range xlRange = worksheetWrite.UsedRange;int numberOfRows = xlRange.Rows.Count;for (int i = 0; i < valueArray.Length; i++){xlRange.Cells[numberOfRows + 1, i + 1] = valueArray[i];}// 关闭工作簿并退出Excel应用程序workbookWrite.Close(true);excelAppWrite.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheetWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(excelAppWrite);worksheetWrite = null;workbookWrite = null;excelAppWrite = null;GC.Collect();return true;}catch (Exception ex){return false;}}//把数据库数据写入工作表public bool WriteToExcel(string openAddr, string sheet, DataTable dataTable){try{Excel.Application excelAppWrite = null;Excel.Workbook workbookWrite = null;Excel.Worksheet worksheetWrite = null;excelAppWrite = new Excel.Application();workbookWrite = excelAppWrite.Workbooks.Open(openAddr);worksheetWrite = workbookWrite.Sheets[sheet];Excel.Range xlRange = worksheetWrite.UsedRange;int numberOfRows = xlRange.Rows.Count;for (int i = 0; i < dataTable.Rows.Count; i++){DataRow dataRow = dataTable.Rows[i];for (int j = 0; j < dataTable .Columns.Count; j++){xlRange.Cells[numberOfRows + i + 1, j + 1] = dataRow[j];}}// 关闭工作簿并退出Excel应用程序workbookWrite.Close(true);excelAppWrite.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheetWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(excelAppWrite);worksheetWrite = null;workbookWrite = null;excelAppWrite = null;GC.Collect();return true;}catch (Exception ex){return false;}}//读取某一个单元格数据public string ReadCell(string openAddr, string sheet, int row, int column){try{Excel.Application excelAppWrite = null;Excel.Workbook workbookWrite = null;Excel.Worksheet worksheetWrite = null;excelAppWrite = new Excel.Application();workbookWrite = excelAppWrite.Workbooks.Open(openAddr);worksheetWrite = workbookWrite.Sheets[sheet];Excel.Range xlRange = worksheetWrite.UsedRange;string cellValue = xlRange.Cells[row, column].Text.ToString();// 关闭工作簿并退出Excel应用程序workbookWrite.Close(true);excelAppWrite.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheetWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(excelAppWrite);worksheetWrite = null;workbookWrite = null;excelAppWrite = null;GC.Collect();return cellValue;}catch (Exception ex){return "";}}//读取最后一行数据public List<string> ReadToRow(string openAddr, string sheet){List<string> valueArray = new List<string>();try{Excel.Application excelAppWrite = null;Excel.Workbook workbookWrite = null;Excel.Worksheet worksheetWrite = null;excelAppWrite = new Excel.Application();workbookWrite = excelAppWrite.Workbooks.Open(openAddr);worksheetWrite = workbookWrite.Sheets[sheet];Excel.Range xlRange = worksheetWrite.UsedRange;int numberOfRows = xlRange.Rows.Count;int numberOfColumn = xlRange.Columns.Count;for(int i = 0; i < numberOfColumn; i++){valueArray.Add(xlRange.Cells[numberOfRows, i + 1].Text.ToString());}// 关闭工作簿并退出Excel应用程序workbookWrite.Close(true);excelAppWrite.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheetWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookWrite);System.Runtime.InteropServices.Marshal.ReleaseComObject(excelAppWrite);worksheetWrite = null;workbookWrite = null;excelAppWrite = null;GC.Collect();return valueArray;}catch (Exception ex){return valueArray;}}}
}

相关文章:

  • inline小知识
  • 深入理解Java基本类型
  • 240425 leetcode exercises
  • 常见网络安全攻击类型深度剖析(一):恶意软件攻击——病毒、蠕虫、木马的原理与防范
  • promethus基础
  • 【C/C++】从源码到执行:程序运行的完整生命周期解析
  • 风车邮箱系统详细使用指南:Windows与Ubuntu双平台解析
  • 一键设置屏幕水印 助力数据安全
  • gophish
  • 机器学习基础 - 回归模型之线性回归
  • 同一电脑下使用 python2 和 python3
  • 使用开源免费雷池WAF防火墙,接入保护你的网站
  • 100个用户的聊天系统:轮询 vs WebSocket 综合对比
  • 重生之--js原生甘特图实现
  • WordPress AI插件能自动写高质量文章吗,如何用AI提升网站流量
  • Python 3.14:探索新版本的魅力与革新
  • 7.11 Python CLI开发实战:API集成与异步处理核心技术解析
  • 人工智能在创意设计中的应用:激发无限可能
  • 【高频考点精讲】JavaScript事件循环机制:从宏任务微任务到渲染时机
  • P12167 [蓝桥杯 2025 省 C/Python A] 倒水
  • 甘肃张掖至重庆航线开通,串起西北与西南文旅“黄金走廊”
  • 蜀道考古调查阶段性成果发布,新发现文物遗存297处
  • 手机号旧机主信用卡欠款、新机主被催收骚扰四年,光大银行济南分行回应
  • 铜钴巨头洛阳钼业一季度净利润同比大增九成,最新宣布首度进军黄金矿产
  • “五一”假期云南铁路预计发送旅客超330万人次
  • 美施压拉美国家选边站队,外交部:搞阵营对抗注定失败