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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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即可。相信你也会。


有什么问题再问我吧。

参考技术A 推荐使用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中。
你可以尝试着写,有什么问题 欢迎交流。追问

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

追答

欢迎交流。

参考技术B 可以以oledb方式将数据读出来,然后再将它放在table中,接着逻辑就简单了,初级程序员也能搞定追问

谢谢帮助!

参考技术C 用Excel的处理框架啊

用java代码实现读取Excel中每个sheet页的内容,并且要与其他的Excel中某一列的值进行

用java代码实现读取Excel中每个sheet页的内容,并且要与其他的Excel中某一列的值进行比较,如果符合将结果输出到resultExcel中,我的思路不太清晰,具体实现过程哪位大虾指点一下吧?

/**
*
* <p>标题:readExcel</p>
* <p>描述:读取Excel文件数据</p>
* @param excelfilePath Excel文件路径
* @param startRow 开始行
* @param startCol 开始列
* @return List<ArrayList<String>>
* @throws IOException
* @throws BiffException
*/
public List<Map<String, Object>> readExcel(String excelfilePath,int startRow, int startCol)
throws IOException, BiffException
// 读取xls文件
InputStream ins = new FileInputStream(excelfilePath);
// 设置读文件编码
WorkbookSettings setEncode = new WorkbookSettings();
setEncode.setEncoding("UTF-8");
Workbook rwb = Workbook.getWorkbook(ins, setEncode);
List<Map<String, Object>> alldata = new ArrayList<Map<String, Object>>();
Map<String, Object> data = null;
alldata.clear();
// 获得当前Excel表共有几个sheet
Sheet[] sheets = rwb.getSheets();
// 获得表数
int pages = sheets.length;
// 将excel表中的数据读取出来
// 在从Excel中读取数据的时候不需要知道每个sheet有几行,有那多少列
for (int i = 0; i < pages; i++)
//这里读取excel中每个sheet的数据,Sheet sheet = rwb.getSheet(i); 读取第二个sheet就是getSheet(1);
Sheet sheet = rwb.getSheet(i);
int cols = sheet.getColumns(); // 列
// 读取每一行对应的列数目
// 循环读取每一行的全部列数目的内容
int rows = sheet.getRows(); // 行
for (int r = startRow; r < rows; r++)
data = new HashMap<String, Object>();
// 行循环,Excel的行列是从(0,0)开始
for (int c = startCol; c < cols; c++)
Cell excelRows = sheet.getCell(c, r);
data.put("bgbh", excelRows.getContents());

alldata.add(data);


ins.close();
return alldata;
追问

大谢

参考技术A 看看poi包的api文档。追问

ok,谢了

以上是关于c# 修改excel中某一行某一列的数据的主要内容,如果未能解决你的问题,请参考以下文章

用java代码实现读取Excel中每个sheet页的内容,并且要与其他的Excel中某一列的值进行

怎样读取excel某一列的每一行内容

如何更改SQL中某列的值

如何让excel中某一列的序号自动增加

如何从C#中获取ListView中选中某一行某一列的值

怎么给DataTable中某一行设置颜色