问题是这样的:
首先我会再我的列表中选中一行数据,我要将一行数据对应的每个单元格的数据更新至Excel模板文件中。
Excel文件模板已经有了,需要更新的字段也都在固定的单元格内。我不清楚对应应该做哪些工作,比如:我要将选中的数据行中第一列的值更新至Excel模板中C12 这个单元格中,我应该怎么操作呢。目前我了解,需要引用Microsoft.Office.Interop.Excel 组件 但是用什么方法还不知道,具体的原理还请高手给予简单的讲解
首先我会再我的列表中选中一行数据,我要将一行数据对应的每个单元格的数据更新至Excel模板文件中。
Excel文件模板已经有了,需要更新的字段也都在固定的单元格内。我不清楚对应应该做哪些工作,比如:我要将选中的数据行中第一列的值更新至Excel模板中C12 这个单元格中,我应该怎么操作呢。目前我了解,需要引用Microsoft.Office.Interop.Excel 组件 但是用什么方法还不知道,具体的原理还请高手给予简单的讲解
private void WriteExcel_Step(string filename)
{
Application excel = new ApplicationClass();
_Workbook xBk;
xBk = excel.Workbooks.Add(true);
excel.Visible = true;
progressBar1.Visible = true;
progressBar1.Maximum = dt.Rows.Count;
progressBar1.Value = 0;
progressBar1.Step = 1;
for (int i=0;i<dt.Columns.Count;i++)
{
excel.Cells[1, i + 1] = dt.Columns[i].Caption;
}
int j = 2;
string s= "";
foreach (DataRow r in dt.Rows) //dt是数据集
{
for (int i = 0; i < r.ItemArray.Length; i++)
{
try
{
s = "";
if (dt.Columns[i].DataType.Name == "String")
{
s = "'";
}
if (dt.Columns[i].Caption == "交易日期")
{
excel.Cells[j, i + 1] = s + ConvertDate(r.ItemArray.GetValue(i).ToString());
}
else if (dt.Columns[i].Caption == "交易时间")
{
excel.Cells[j, i + 1] = s + ConvertTime(r.ItemArray.GetValue(i).ToString());
}
else
excel.Cells[j, i + 1] = s + r.ItemArray.GetValue(i).ToString();
}
catch
{
continue;
}
}
j++;
}
progressBar1.Value = 0;
progressBar1.Visible = false;
}
{
int index = dataGridView1.SelectedRows[0].Index; //获取选中行的行号
string a = dataGridView1.Rows[index].Cells[0].Value.ToString();
}我说下我的思路,新建一个datatable,讲获取到a的值写入到datatable的第三列第12行,也就是excel的C12.怎么写?新增行,内容都为"空格",新增到12行的时候再第三列写入a。然后遍历datatable,写入到excel,这个代码很多,百度一下就有了。
不推荐用com组件,容易出现关不掉的进程