前面写了C#实战021:OleDb操作-新增Excel中的sheet工作表,接下来我们就要在新增的表中添加数据了,在网上找了很多方法,都没有OleDb对excel表操作批量操作,后来通过对mysql的研究终于还是找到了合适的方法。

我们先来新建一个带表头的空表单,为表单先创建个表头,相当于在mysql先建立些空字段。

OleDbCommand cmd = myCon.CreateCommand();//创建工作表命令
string sheetName1 = "刀具预估数量";
if (tableName.Contains(sheetName1))
{cmd.CommandText = "DROP TABLE 刀具预估数量";cmd.ExecuteNonQuery();// 执行创建sheet的语句
}
cmd.CommandText = "CREATE TABLE 刀具预估数量 ([序号] INTEGER, [夹位] VarChar, [刀号] VarChar,[刀具规格] VarChar,[1月] VarChar,[2月] VarChar,[3月] VarChar,[4月] VarChar,[5月] VarChar,[6月] VarChar,[7月] VarChar,[8月] VarChar,[9月] VarChar,[10月] VarChar,[11月] VarChar,[12月] VarChar)";
cmd.ExecuteNonQuery();

建完表单我们并无法再该表中添加数据,因为这时候该表是0行的,既然没有行自然就没法再对应的单元格进行赋值的,所以我们还需要插入一定的行数,这个数量就看你的需求了,我在这里写了一个序列,相信每个表都需要有这一列吧。

for (int i = 1; i < sheet2Rows; i++)
{cmd.CommandText = " insert into 刀具预估数量 (序号) values (" + Convert.ToString(i) + ")";cmd.ExecuteNonQuery();//Console.WriteLine("这是新增的数据" + i);
}

有了对应的行数我们就可以将该表存到内存中去了,这样内存中就有了对应的行和列的一个空表单

string sheet4 = "select*from[刀具预估数量$]";//定义Excel工作表单
OleDbDataAdapter Command4 = new OleDbDataAdapter(sheet4, myCon);//从工作表中查询数据
DataSet sheetdata4 = new DataSet(); //创建数据集对象
Command4.Fill(sheetdata4, "刀具预估数量");//填充数据集 

接下来就可以给对应的单元格进行赋值了,这里需要注意的是OleDb操作Excel时它的起始是0,而不是1(而且表头除外)。

在我们将数据写入到Excel表中之前,我们最好现将数据写入对应的缓存表中,这样在后面的计算中才能找到我们所需的数据(要想计算的快,最好从缓存中提取数据,而非再次读取Excel)。

 // 添加数据
for (int i = 1; i < sheet2Rows; i++)
{sheetdata4.Tables[0].Rows[i - 1]["夹位"] = sheetdata2.Tables[0].Rows[i][1].ToString().Trim(); //夹位sheetdata4.Tables[0].Rows[i - 1]["刀号"] = sheetdata2.Tables[0].Rows[i][2].ToString().Trim();//刀号sheetdata4.Tables[0].Rows[i - 1]["刀具规格"] = sheetdata2.Tables[0].Rows[i][5].ToString().Trim();//刀具规格//Console.WriteLine("成功赋值:"+i);
}

然后我们再从缓存中区提取要写入Excel中的数据,因为是数据库读取的数据,所以数据再插入时并不能像Excel组件那样循环写入了,它只能一个字段字段的写入,所以这里我们只能列循环,而无法行循环。

for (int i = 1; i < sheet2Rows; i++)
{string d1 = Convert.ToString(i);string d2 = sheetdata4.Tables[0].Rows[i - 1]["夹位"].ToString().Trim();string d3 = sheetdata4.Tables[0].Rows[i - 1]["刀号"].ToString().Trim();string d4 = sheetdata4.Tables[0].Rows[i - 1]["刀具规格"].ToString().Trim();//Console.WriteLine(d2);//Console.WriteLine(d3);//Console.WriteLine(d4);cmd.CommandText = "UPDATE  [" + sheetName1 + "] SET 夹位='" + d2 + "' WHERE 序号=" + d1 + "";cmd.ExecuteNonQuery();cmd.CommandText = "UPDATE  [" + sheetName1 + "] SET 刀号='" + d3 + "' WHERE 序号=" + d1 + "";cmd.ExecuteNonQuery();cmd.CommandText = "UPDATE  [" + sheetName1 + "] SET 刀具规格='" + d4 + "' WHERE 序号=" + d1 + "";cmd.ExecuteNonQuery();//Console.WriteLine("这是新增的数据" + i);
}

这样我们就需要在对应的列表中写入循环就可以将数据一列列的写入到Excel表中了。

由于OleDb操作对Excel的控制性不高,所以要想把表格属性也控制好,这时候我们可以结合Excel组件来帮助我们完成,只要把处理数据这重要的部分交给OleDbl来操作即可。

//设置表单样式
App = new Excel.Application();       //创建 Excel对象
object missing = Missing.Value;            //获取缺少的object类型值
wb = App.Workbooks.Open(ExcelName, missing, missing, missing, missing,missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
Excel.Worksheet ws1 = ((Excel.Worksheet)wb.Worksheets["刀具预估数量"]);//方法一:指定工作表名称读取
Excel.Worksheet ws2 = ((Excel.Worksheet)wb.Worksheets["Forecast"]);//方法一:指定工作表名称读取
ws1.get_Range("A1", "P1").Interior.ColorIndex = 14;//填充背景色
ws1.get_Range("A1", "P1").Borders.LineStyle = 1;//设置表格的线宽
ws2.get_Range("A1", "P1").Interior.ColorIndex = 14;//填充背景色
ws2.get_Range("A1", "P1").Borders.LineStyle = 1;//设置表格的线宽
ws1.get_Range("A1").ColumnWidth = 5;   //固定宽度
ws1.get_Range("B1").ColumnWidth = 10;
ws1.get_Range("C1").ColumnWidth = 10;
ws1.get_Range("D1").ColumnWidth = 15;
ws2.get_Range("A1").ColumnWidth = 5;   //固定宽度
ws2.get_Range("B1").ColumnWidth = 25;
ws2.get_Range("C1").ColumnWidth = 15;
wb.Save();
App.Visible = true;

首发百度经验:  C#实战023:OleDb操作-Excel数据写入

欢迎关注本人的公众号:编程手札,文章也会在公众号更新

C#实战028:OleDb操作-Excel数据写入相关推荐

  1. excel oledb mysql_C#实战023:OleDb操作-Excel数据写入

    这样我们就需要在对应的列表中写入循环就可以将数据一列列的写入到Excel表中了. 由于OleDb操作对Excel的控制性不高,所以要想把表格属性也控制好,这时候我们可以结合Excel组件来帮助我们完成 ...

  2. oledb 操作 excel

    oledb excel http://wenku.baidu.com/search?word=oledb%20excel&ie=utf-8&lm=0&od=0 [Asp.net ...

  3. C#使用oledb操作excel文件的方法

    本文实例讲述了C#使用oledb操作excel文件的方法.分享给大家供大家参考.具体分析如下: 不管什么编程语言都会提供操作Excel文件的方式,C#操作Excel主要有以下几种方式: 1.Excel ...

  4. C#操作Excel数据增删改查(转)

    C#操作Excel数据增删改查. 首先创建ExcelDB.xlsx文件,并添加两张工作表. 工作表1: UserInfo表,字段:UserId.UserName.Age.Address.CreateT ...

  5. Pywin32操作Excel数据的类

    练习Pywin32操作Excel数据.学习https://blog.csdn.net/qdx411324962/article/details/44270455这篇博客后编写的内容.编写完成后进行测试 ...

  6. E005 如何把Excel数据写入Word生成工资字条

    Hi,How are you doing? 我是职场编码(CodeVoc). 在E000中,我们介绍了Node.js.Ruby.Electron等工具下载安装. 这期,给你演示一下由Electron联 ...

  7. python读取excel送到网页_python怎么读取excel!怎么用python将excel数据写入网页中

    怎么用python将excel数据写入网页中 # 装 xlrd-0.9.2 xlutils-1.7.1 这两个模 from xlwt import Workbook, Formula import x ...

  8. python 网页上显示数据_怎么用python将excel数据写入网页中,python 网页上excel表格数据分析...

    用python读取excel,怎样显示要查找的数据? 感觉还是CSV格式的好一些,EXCEL的要装插件,以CSV为例,段代码 sqlserver char 对应c# import linecache ...

  9. C#操作Excel数据读写/指定打印机打印

    C#操作Excel 数据的读写 前情提要 实例 指定打印机打印 附加:打印时预览配置 数据的读写 前情提要 本文对于excel的操作使用的是Microsoft.Office.Interop.Excel ...

最新文章

  1. HDU - 6598 Harmonious Army(最大流最小割)
  2. 6 rethad 自定义硬盘_图文详解zabbix配置自定义监控项过程
  3. 信息学奥赛一本通 1156:求π的值
  4. 六零后的人马上步入老年生活,没有退休金,如何养老?
  5. asp. net sqlsever旅游管理系统动态网站设计制作作业成品
  6. unity Rigidbogy组件
  7. 老美,人不能无耻到这种地步
  8. CGI编程学习----查询2000W开房数据
  9. 关于MacBook蓝牙键盘鼠标耳机等设备各种的卡顿、黏滞、断开连接等各种问题解决方案
  10. 单细胞甲基化测序(scBS-seq)比对率奇低?你的文库方向性参数可能没选对!
  11. 使用openssl制作证书和进行CMS格式数字签名
  12. 公司网站源码(公司官网源码)PHP
  13. Mentor-dft 学习笔记 day24-Path Definition File
  14. 男女RatingBar
  15. JAVA—— HTML
  16. 一个运放应用电路举例分析与跟随器的实现
  17. java读法,Java 把数字转换为中文读法
  18. 计算机科学导论思维与方法,计算机科学导论、计算思维的结构mooc答案
  19. 站群服务器C段是什么
  20. python环境安装有问题_python基础——python安装及问题解决

热门文章

  1. 风云lua分析-Lua GC 的源码剖析 (2)
  2. NILM(非侵入式电力负荷监测)学习笔记 —— 准备工作(一)配置环境NILMTK Toolkit
  3. 牛新庄的数据库学习“曲线”
  4. 计算机专业512g固态硬盘够吗,只有一块512G固态硬盘的电脑,需不需要分区?不存数据可以不分...
  5. Private Set Intersection(PSI)简介和资料分享
  6. 由火车站戴口罩人脸识别入站感想
  7. Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)
  8. java去除特殊字符_java去除字符串中的特殊符号或指定的字符
  9. 读后感-专访戴文渊:第四范式(现在)是一家怎样的公司?
  10. flash只能读不能写 Read-only file system