c# 修改excel中某一行某一列的数据

如图:现有10个格式A列相同,具体数据B列不同的excel表格,放在一个叫“111”的文件夹内,要求
判断“长度范围“所对应的B4内数据位数是否与B5一致,共有5+1+5=11位
位数相同则不变,位数为4+1+4=9位的在第1位和第6位前补“0”,也就变成“02008-03005”,和B5位数一致
修改成功后messagebox.show(“已成功修改!”)即可
求C#高手帮忙,小弟是为了单位编个小程序,分数虽然不多,一经采用,全部都给了!谢谢大虾们~~

首先要引入

using System;
using System.Data.OleDb;
using System.Data;
using Microsoft.Office.Interop.Excel;

第二步

读取Excel文件

protected Microsoft.Office.Interop.Excel.Application objExcelApp;//定义Excel Application对象
private Microsoft.Office.Interop.Excel.Workbooks objExcelWorkBooks;//定义Workbook工作簿集合对象
protected Microsoft.Office.Interop.Excel.Workbook objExcelWorkbook;//定义Excel workbook工作簿对象
private Worksheet objExcelWorkSheet;//定义Workbook工作表对象

objExcelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
objExcelWorkBooks = objExcelApp.Workbooks;
objExcelWorkbook = objExcelWorkBooks.Open(strFileFullName, 0, false, 5, "", "", true,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
//方法中的各种参数的意思,第一个是文件;其他的参数建议查看一下帮助文档

第三步

打开工作表

objExcelWorkSheet = (Worksheet)objExcelWorkbook.Worksheets[strSheetName]; //strSheetName是指的Exce工作簿的Sheet名,如果没有命名则为"1"
objExcelWorkSheet.Select(Type.Missing);

第四步

获取单元格值

//你这里只要比较B4和B5的长度,所以只需取这两个值就可以
//获得当前活动表
Worksheet objExcelWorkSheetTemp = (Worksheet)objExcelApp.ActiveSheet;
//B4的值
Range objRange = objExcelWorkSheetTemp.get_Range(objExcelWorkSheetTemp.Cells[4, 2], objExcelWorkSheetTemp.Cells[4, 2]);
string strB4Value = objRange.Value2.ToSting();
//同理读取B5值
Range objRange2 = objExcelWorkSheetTemp.get_Range(objExcelWorkSheetTemp.Cells[5, 2], objExcelWorkSheetTemp.Cells[5, 2]);
string strB5Value = objRange2.Value2.ToSting();
//若想循环取值,建议使用oledb方式将数据读出来,放在DataTable中,再循环处理,这里就不细说,网上到处都有

第五步

此时两个值已经取得,比较值长度和处理字符串,相信你也会。这里也就不细说了。


第六步

往Excel里写值

objExcelWorkSheetTemp.Cells[intRow, intCol] = strValue;//intRow,行;intCol;列;strValue,你处理完以后的值

第七步

保存Excel

objExcelWorkbook.Save();

最后

在前台返回MessageBox即可。相信你也会。


有什么问题再问我吧。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-11
推荐使用aspose.cells。这个控件很强大,网上有很多破解的dll,你下载下来,引入到项目中。(可以去官网的文档中看看具体的使用方法)。
下面是部分代码:
Workbook workbook = new Workbook(_ExcelPath); //_ExcelPath 这是excel文件的路径
Worksheet sheet = workbook.Worksheets[0];
Cells cells = sheet.Cells;
Dictionary<string, string> cmpDic = new Dictionary<string, string>();
DataTable dataTable = new DataTable();
dataTable = sheet.Cells.ExportDataTable(0, 0, sheet.Cells.MaxRow + 1,
sheet.Cells.MaxColumn + 1);
将excel中的数据读到DataTable中,将修改后的数据在写入到Excel中。
当然除此方法之外,aspose.cells中本身就提供了对数据库的查找和修改,你可以参考:
http://www.aspose.com/demos/.net-components/aspose.cells/csharp/quick-start/data/find-or-search-data.aspx 这是查找excel中的数据。
http://www.aspose.com/demos/.net-components/aspose.cells/csharp/quick-start/data/importing-data.aspx 这是导入数据到excel中。
你可以尝试着写,有什么问题 欢迎交流。追问

虽然不是针对我这个实例,但也十分感谢帮忙啊,哈哈,谢谢谢谢,希望经常交流,向您学习!

追答

欢迎交流。

第2个回答  2013-07-11
可以以oledb方式将数据读出来,然后再将它放在table中,接着逻辑就简单了,初级程序员也能搞定追问

谢谢帮助!

第3个回答  2013-07-11
用Excel的处理框架啊

c# 修改excel中某一行某一列的数据
string strB4Value = objRange.Value2.ToSting();\/\/同理读取B5值Range objRange2 = objExcelWorkSheetTemp.get_Range(objExcelWorkSheetTemp.Cells[5, 2], objExcelWorkSheetTemp.Cells[5, 2]);string strB5Value = objRange2.Value2.ToSting();\/\/若想循环取值,建议使用oledb方式将数据读出来,...

c# 修改excel中某一行某一列的数据
将excel中的数据读到DataTable中,将修改后的数据在写入到Excel中。当然除此方法之外,aspose.cells中本身就提供了对数据库的查找和修改,你可以参考:http:\/\/www.aspose.com\/demos\/.net-components\/aspose.cells\/csharp\/quick-start\/data\/find-or-search-data.aspx 这是查找excel中的数据。http:\/\/www.aspose.com\/d...

c# 如何修改 excel 某一单元格的值?
回答:"load完excel后直接写就可以 sheet.Cells[X,Y].Value = 需要修改的值 sheet设为当前活动的工作簿"

C#删除excel某行和某列代码怎么写
work = excel.Application.Workbooks.Open(...太长省略);sheet = (MSExcel.Worksheet)work.Worksheets[1];((MSExcel.Range)sheet.Cells[System.Reflection.Missing.Value, 1]).EntireColumn.Delete(0) \/\/Cells的第一个参数是行,第二个参数是列,不指定行(System.Reflection.Missing.Value),只定义...

求教,用C#如何修改excel表格中指定单元格中的数据
ex = new Microsoft.Office.Interop.Excel.Application();excel.Workbook wb=ex.Application.Workbooks.Open("e:\\\\1.xls",Type.Missing,);excel.Worksheet ws = (excel.Worksheet)wb.Sheets[2] as excel.Worksheet;string str;ex.Cells[1,1].\/\/\/我想把cells[1,1]的值给str ...

C# 如何删除Excel表格中的一行,并使下边的单元格向上移?
我有个笨招不知道行不行,用排序功能,你先把每行后面加上数字,例如1、2、3...,一直到最后一行,然后按第二列排序,这时就会按文字进行排序,你就可以把下面的空白格都删掉,删除后你再按刚才输入的数字列进行排序,就可以了。希望我没理解错你的意思 ...

c#如何对一个打开的excel表格的一个区域的数据,按照某两列的大小进行...
打开表格,全选整个表格,在“数据”选项中选择“排序”,点击“包含标题”,点击“主要关键字”,选择你想按大小进行排序的两列中首先需要的其中一列的代号,然后选择“排序依据”,最后选择“次序”中的“升序”还是“降序”;其次再点“添加条件”重复以上步骤,就达到排序目的了 ...

如何用c#修改excel里面的内容
public static Missing MissValue=Missing.Value;private Excel.Application m_objExcel;\/\/Excel应用程序实例 private Excel.Workbooks m_objBooks;\/\/工作表集合 private Excel.Workbook m_objBook;\/\/当前操作的工作表 private Excel.Worksheet sheet;\/\/当前操作的表格 public void OpenExcelFile(string file...

C# 操作Excel问题,怎么删除指定的行?
我目前手头没有C#环境,所以只好用VBA代码示意一下了,C#的代码应该可以类推。下面这个代码将指定的Excel文件的第一行删除:Application.Workbooks.Open("C:\\temp\\Test.xls").ActiveSheet.Rows(1).Delete True 对了,在C#中使用Excel对象模型需要加入Excel Interop库的引用。

c#如何实现对表格(excel)的增删改查?
一、首先处理好数据库连接字串 Excel2000-2003: string connStr = "Microsoft.Jet.Oledb.4.0;Data Source='c:\\test.xls';Extended Properties=\\"Excel 8.0;HDR=Yes;IMEX=1\\";";Excel2007: string connStr = "Microsoft.Ace.OleDb.12.0;Data Source='c:\\test.xlsx';Extended Properties=\\"...

相似回答