C#实战023:OleDb操作-Excel数据写入
来源:网络收集 点击: 时间:2024-03-30我们先来新建一个带表头的空表单,为表单先创建个表头,相当于在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, VarChar, VarChar, VarChar, VarChar, VarChar, VarChar, VarChar, VarChar, VarChar, VarChar, VarChar, VarChar);
cmd.ExecuteNonQuery();

建完表单我们并无法再该表中添加数据,因为这时候该表是0行的,既然没有行自然就没法再对应的单元格进行赋值的,所以我们还需要插入一定的行数,这个数量就看你的需求了,我在这里写了一个序列,相信每个表都需要有这一列吧。
for (int i = 1; i sheet2Rows; i++)
{
cmd.CommandText = insert into 刀具预估数量 (序号) values ( + Convert.ToString(i) + );
cmd.ExecuteNonQuery();
//Console.WriteLine(这是新增的数据 + i);
}

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

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

在我们将数据写入到Excel表中之前,我们最好现将数据写入对应的缓存表中,这样在后面的计算中才能找到我们所需的数据(要想计算的快,最好从缓存中提取数据,而非再次读取Excel)
for (int i = 1; i sheet2Rows; i++)
{
sheetdata4.Tables.Rows = sheetdata2.Tables.Rows.ToString().Trim(); //夹位
sheetdata4.Tables.Rows = sheetdata2.Tables.Rows.ToString().Trim();//刀号
sheetdata4.Tables.Rows = sheetdata2.Tables.Rows.ToString().Trim();//刀具规格
//Console.WriteLine(成功赋值:+i);
}

然后我们再从缓存中区提取要写入Excel中的数据,因为是数据库读取的数据,所以数据再插入时并不能像Excel组件那样循环写入了,它只能一个字段字段的写入,所以这里我们只能列循环,而无法行循环。
for (int i = 1; i sheet2Rows; i++)
{
string d1 = Convert.ToString(i);
string d2 = sheetdata4.Tables.Rows.ToString().Trim();
string d3 = sheetdata4.Tables.Rows.ToString().Trim();
string d4 = sheetdata4.Tables.Rows.ToString().Trim();
cmd.CommandText = UPDATE SET 夹位= + d2 + WHERE 序号= + d1 + ;
cmd.ExecuteNonQuery();
cmd.CommandText = UPDATE SET 刀号= + d3 + WHERE 序号= + d1 + ;
cmd.ExecuteNonQuery();
cmd.CommandText = UPDATE 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);//方法一:指定工作表名称读取
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;

版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_382370.html