C#操作Excel文件暨C#实现在Excel中将连续多列相同数据项合并
C#操作Excel文件(读取Excel,写入Excel)
看到论坛里面不断有人提问关于读取excel和导入excel的相关问题。闲暇时间将我所知道的对excel的操作加以总结,现在共享大家,希望给大家能够给大家带了一定的帮助。
另外我们还要注意一些简单的问题1.excel文件只能存储65535行数据,如果你的数据大于65535行,那么就需要将excel分割存放了。2.关于乱码,这主要是字符设置问题。
1.加载Excel(读取excel内容)返回值是一个DataSet
//加载Excel
public static DataSet LoadDataFromExcel(string filePath)
{
try
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
String sql = "SELECT * FROM [Sheet1$]";//可是更改Sheet名称,比如sheet2,等等
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
DataSet OleDsExcle = new DataSet();
OleDaExcel.Fill(OleDsExcle, "Sheet1");
OleConn.Close();
return OleDsExcle;
}
catch (Exception err)
{
MessageBox.Show("数据绑定Excel失败!失败原因:" + err.Message, "提示信息",
MessageBoxButtons.OK, MessageBoxIcon.Information);
return null;
}
}
2.写入Excel内容,参数:excelTable是要导入excel的一个table表
public static bool SaveDataTableToExcel(System.Data.DataTable excelTable, string filePath)
{
Microsoft.Office.Interop.Excel.Application app =
new Microsoft.Office.Interop.Excel.ApplicationClass();
try
{
app.Visible = false;
Workbook wBook = app.Workbooks.Add(true);
Worksheet wSheet = wBook.Worksheets[1] as Worksheet;
if (excelTable.Rows.Count > 0)
{
int row = 0;
row = excelTable.Rows.Count;
int col = excelTable.Columns.Count;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
string str = excelTable.Rows[i][j].ToString();
wSheet.Cells[i + 2, j + 1] = str;
}
}
}
int size = excelTable.Columns.Count;
for (int i = 0; i < size; i++)
{
wSheet.Cells[1, 1 + i] = excelTable.Columns[i].ColumnName;
}
//设置禁止弹出保存和覆盖的询问提示框
app.DisplayAlerts = false;
app.AlertBeforeOverwriting = false;
//保存工作簿
wBook.Save();
//保存excel文件
app.Save(filePath);
app.SaveWorkspace(filePath);
app.Quit();
app = null;
return true;
}
catch (Exception err)
{
MessageBox.Show("导出Excel出错!错误原因:" + err.Message, "提示信息",
MessageBoxButtons.OK, MessageBoxIcon.Information);
return false;
}
finally
{
}
}
C#实现在Excel中将连续多列相同数据项合并
效果图如下:
代码如下:
/** <summary>
/// 合并工作表中指定行数和列数数据相同的单元格
/// </summary>
/// <param name="sheetIndex">工作表索引</param>
/// <param name="beginRowIndex">开始行索引</param>
/// <param name="beginColumnIndex">开始列索引</param>
/// <param name="rowCount">要合并的行数</param>
/// <param name="columnCount">要合并的列数</param>
public void MergeWorkSheet(int sheetIndex,int beginRowIndex,int beginColumnIndex,int rowCount,int columnCount)
{
//检查参数
if ( columnCount < 1 || rowCount < 1)
return ;
for(int col=0;col<columnCount;col++)
{
int mark = 0; //标记比较数据中第一条记录位置
int mergeCount = 1; //相同记录数,即要合并的行数
string text = "";
for(int row=0;row<rowCount;row++)
{
string prvName = "";
string nextName = "";
//最后一行不用比较
if( row + 1 < rowCount)
{
for(int n=0;n<=col;n++)
{
range = (Excel.Range)workSheet.Cells[row + beginRowIndex,n + beginColumnIndex];
range = (Excel.Range)range.MergeArea.get_Item(1,1);
text = range.Text.ToString();
prvName = prvName + text;
range = (Excel.Range)workSheet.Cells[row + 1 + beginRowIndex,n + beginColumnIndex];
range = (Excel.Range)range.MergeArea.get_Item(1,1);
nextName = nextName + range.Text.ToString();
}
if(prvName == nextName)
{
mergeCount++;
if(row == rowCount - 2)
{
this.MergeCells(sheetIndex,beginRowIndex + mark,beginColumnIndex + col,beginRowIndex + mark + mergeCount - 1,beginColumnIndex + col,text);
}
}
else
{
this.MergeCells(sheetIndex,beginRowIndex + mark,beginColumnIndex + col,beginRowIndex + mark + mergeCount - 1,beginColumnIndex + col,text);
mergeCount = 1;
mark = row + 1;
}
}
}
}
}
转载于:https://www.cnblogs.com/ly5201314/archive/2009/06/06/1497448.html
C#操作Excel文件暨C#实现在Excel中将连续多列相同数据项合并相关推荐
- php原生读取excel文件夹,原生php实现excel文件读写的方法分析php技巧
这篇文章主要介绍了原生php实现excel文件读写的方法,结合实例形式分析了采用原生php针对Excel进行读写操作的相关实现方法与操作注意事项,需要的朋友可以参考下 本文实例分析了原生php实现ex ...
- 用pandas生成excel文件示例,并调整excel的格式或样式
用pandas生成excel 当我们有特殊的需求时,比如要修改excel的行宽列宽,还有字体样式等等 需求示例 代码实现 # -*- coding: utf-8 -*- import pandas a ...
- python如何创建excel文件_Python xlrd/xlwt 创建excel文件及常用操作
一.创建excel代码 备注:封装好了(可直接调用) """ -*- coding:utf-8 -*- @Time :2020/8/20 21:02 @Author :J ...
- 如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?
在POI的第一节入门中,我们提供了两个简单的例子,一个是如何用Apache POI新建一个工作薄,另外一个例子是,如果用Apache POI新建一个工作表.那么在这个章节里面,我将会给大家演示一下,如 ...
- java导出为excel文件_java导出数据到excel文件
有的时候,将一些有用的数据导出到excel是很有必要的.比如说,我现在在做一个学校的在线教学平台,有一个需求是:将学生成绩导出到excel文件中去. 那怎样实现用java导出数据到excel文件呢?? ...
- 怎么用python处理excel文件-如何用python处理excel表格
openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装. 读取Excel文件 需要导入相关函数 from openpyxl import l ...
- 打开excel文件并写入_双击Excel表格文件时只打开程序不能直接打开文件
故障描述:双击EXCEL表格文件时仅打开了excel窗口,对应文件不能直接打开文件 ,需通过文件--打开--选中文件来打开. 打开excel后不显示文件内容 注意事项:遇到此类问题时首先通过" ...
- python怎么打开excel文件并处理_python处理excel文件
python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 可从这里下载https://pypi.python.org/pypi.下面分别记录 ...
- php删除excel文件,PHPExcel:HTML到Excel,写入删除excel文件中的CSS
我想导出(强制下载) HTML(带CSS)到EXCEL表,现在我使用 PHPExcel库来执行此操作,它生成excel文件但删除CSS(使用内联html标签),任何人都可以指导我,如何将CSS保存在E ...
最新文章
- linux expect 输入密码,shell脚本无密码登录 expect的使用方法详解
- 算法和编程面试题精选 TOP50!(附代码+解题思路+答案)
- SQL Server遍历表中记录的2种方法
- 使用dx命令在cmd环境下执行的正确方法,我用的版本android4.4.2,jdk1.8
- 一)golang的单例模式
- 常用 MySQL 操作
- 关于VLAN Tag,PVID的问题
- 重装系统后git库不能使用_重装系统后git库初始化
- [leetcode] 379. Design Phone Directory 解题报告
- cents7安装docker并部署nginx、mysql容器
- 第七章 NoSQL数据库技术(二)
- sql server 2008 r2 忘记sa密码, 没有window账户登录, 解决办法
- android opengl ppt,Opengl example.ppt
- C语言if和汇编jcc程序对比,汇编 JCC指令表与笔记
- 关于如何实现Ubuntu系统的中英文输入法切换
- Linux解压命令汇总
- 压力式泡沫比例混合装置生产厂家分析工作原理数据说明
- linux生物代谢图软件,答疑解惑专题(四)——开源代谢组学全功能软件介绍
- 关于WMV格式文件的解析
- BBB板 --重装操作系统
热门文章
- 操作系统基础知识笔记
- chrome开发者工具各种骚技巧
- 常用 SQL Server 规范集锦
- 贝叶斯分析好坏_贝叶斯统计 | 第五章第一部分 决策基本概念
- 进程间通信IPC(一)(半双工管道和消息队列)
- html5 filereader读取文件,H5的FileReader分布读取文件应该如何使用以及其方法简介...
- 通过栈(Stack)实现对树的遍历
- Java 按位运算符(,|,^,,)
- 尤大是如何发布vuejs的,学完可以应用到项目
- Android Studio中解决jar包重复依赖导致的代码编译错误