求教,用C#如何修改excel表格中指定单元格中的数据?

时间:2022-11-15 18:27:06
比如已经有了一个二维数组
{1,5,5,7,2
2,7,7,8,6
h,f,r,f,d}
想把它以表中H9单元格开头,一行一行的放进去,最后结果:

求教,用C#如何修改excel表格中指定单元格中的数据?

应该怎么写代码?不知道sql能不能用,还是用range,还是用其它办法?

8 个解决方案

#1


都可以,修改用range来得方便些吧,指定的单元格赋一个值就可

#2


告诉你一个用aspose.cell的方法

try
            {
                Workbook workbook = new Workbook(Application.StartupPath + "\\扫描结果.xls");
                Worksheet wsheet = workbook.Worksheets[0];
                wsheet.Cells.Clear();
                int row = 0, col = 1;
                foreach (TreeNode tn in treeView1.Nodes)
                {
                    if (tn.Nodes.Count > 0)
                    {
                        if (tn.Text.IndexOf("(获取数据错误)") >= 0)
                        { wsheet.Cells[row, 0].Value = tn.Text.Substring(8, tn.Text.Length - 8); }
                        else
                        { wsheet.Cells[row, 0].Value = tn.Text; }
                        foreach (TreeNode tx in tn.Nodes)
                        {
                            TreeNodex tnz = (TreeNodex)tx;
                            wsheet.Cells[row, col].Value = tnz.PName;
                            col++;
                        }
                    }
                    col = 1;
                    row++;
                }
                workbook.Save(Application.StartupPath + "\\"+comboBox1.Text +".xls");
            }
            catch { }

这是我程序里的原码,你要用到的就是wsheet.Cells[row,col]=...row是行,col是列从0开始,你数数,你要放的h9是几行几列就行了,直接设置他的值

#3


引用 2 楼 SmileSkyNet 的回复:
告诉你一个用aspose.cell的方法

try
            {
                Workbook workbook = new Workbook(Application.StartupPath + "\\扫描结果.xls");
                Worksheet wsheet = workbook.Worksheets[0];
                wsheet.Cells.Clear();
                int row = 0, col = 1;
                foreach (TreeNode tn in treeView1.Nodes)
                {
                    if (tn.Nodes.Count > 0)
                    {
                        if (tn.Text.IndexOf("(获取数据错误)") >= 0)
                        { wsheet.Cells[row, 0].Value = tn.Text.Substring(8, tn.Text.Length - 8); }
                        else
                        { wsheet.Cells[row, 0].Value = tn.Text; }
                        foreach (TreeNode tx in tn.Nodes)
                        {
                            TreeNodex tnz = (TreeNodex)tx;
                            wsheet.Cells[row, col].Value = tnz.PName;
                            col++;
                        }
                    }
                    col = 1;
                    row++;
                }
                workbook.Save(Application.StartupPath + "\\"+comboBox1.Text +".xls");
            }
            catch { }

这是我程序里的原码,你要用到的就是wsheet.Cells[row,col]=...row是行,col是列从0开始,你数数,你要放的h9是几行几列就行了,直接设置他的值

这还需要另外的控件啊,那太麻烦了。我只是做一个单文件的小软件而已

#4


引用 1 楼 wind_cloud2011 的回复:
都可以,修改用range来得方便些吧,指定的单元格赋一个值就可

用sql怎么做呢?我做的总是报错

#5


 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test1.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
             OleDbConnection conn = new OleDbConnection(strConn);
             string strExcel = "";
             DataSet ds = new DataSet();
             strExcel = "select * from [sheet1$]";
             OleDbDataAdapter da = new OleDbDataAdapter(strExcel, strConn);
             da.Fill(ds);  
             dataGridView1.DataSource = ds.Tables[0];
这样将数据读取到dataGridView1,在dataGridView1里修改值,再更新回到excel中

#6


引用 5 楼 wind_cloud2011 的回复:
 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test1.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
             OleDbConnection conn = new OleDbConnection(strConn);
             string strExcel = "";
             DataSet ds = new DataSet();
             strExcel = "select * from [sheet1$]";
             OleDbDataAdapter da = new OleDbDataAdapter(strExcel, strConn);
             da.Fill(ds);  
             dataGridView1.DataSource = ds.Tables[0];
这样将数据读取到dataGridView1,在dataGridView1里修改值,再更新回到excel中

你写出的都是我会的代码……
我需要的是update语句和怎样把datagridview中的数据更新到excel中

#7


你可以将编辑后的datagridview数据导出为excel,直接更新excel不行,excel不是数据库那样可以设主键,所以比较麻烦些,
http://blog.csdn.net/caoguangguang/article/details/5788364

#8


你可以参考一下这个
http://www.cnblogs.com/hunpo/archive/2013/02/10/2909787.html

#1


都可以,修改用range来得方便些吧,指定的单元格赋一个值就可

#2


告诉你一个用aspose.cell的方法

try
            {
                Workbook workbook = new Workbook(Application.StartupPath + "\\扫描结果.xls");
                Worksheet wsheet = workbook.Worksheets[0];
                wsheet.Cells.Clear();
                int row = 0, col = 1;
                foreach (TreeNode tn in treeView1.Nodes)
                {
                    if (tn.Nodes.Count > 0)
                    {
                        if (tn.Text.IndexOf("(获取数据错误)") >= 0)
                        { wsheet.Cells[row, 0].Value = tn.Text.Substring(8, tn.Text.Length - 8); }
                        else
                        { wsheet.Cells[row, 0].Value = tn.Text; }
                        foreach (TreeNode tx in tn.Nodes)
                        {
                            TreeNodex tnz = (TreeNodex)tx;
                            wsheet.Cells[row, col].Value = tnz.PName;
                            col++;
                        }
                    }
                    col = 1;
                    row++;
                }
                workbook.Save(Application.StartupPath + "\\"+comboBox1.Text +".xls");
            }
            catch { }

这是我程序里的原码,你要用到的就是wsheet.Cells[row,col]=...row是行,col是列从0开始,你数数,你要放的h9是几行几列就行了,直接设置他的值

#3


引用 2 楼 SmileSkyNet 的回复:
告诉你一个用aspose.cell的方法

try
            {
                Workbook workbook = new Workbook(Application.StartupPath + "\\扫描结果.xls");
                Worksheet wsheet = workbook.Worksheets[0];
                wsheet.Cells.Clear();
                int row = 0, col = 1;
                foreach (TreeNode tn in treeView1.Nodes)
                {
                    if (tn.Nodes.Count > 0)
                    {
                        if (tn.Text.IndexOf("(获取数据错误)") >= 0)
                        { wsheet.Cells[row, 0].Value = tn.Text.Substring(8, tn.Text.Length - 8); }
                        else
                        { wsheet.Cells[row, 0].Value = tn.Text; }
                        foreach (TreeNode tx in tn.Nodes)
                        {
                            TreeNodex tnz = (TreeNodex)tx;
                            wsheet.Cells[row, col].Value = tnz.PName;
                            col++;
                        }
                    }
                    col = 1;
                    row++;
                }
                workbook.Save(Application.StartupPath + "\\"+comboBox1.Text +".xls");
            }
            catch { }

这是我程序里的原码,你要用到的就是wsheet.Cells[row,col]=...row是行,col是列从0开始,你数数,你要放的h9是几行几列就行了,直接设置他的值

这还需要另外的控件啊,那太麻烦了。我只是做一个单文件的小软件而已

#4


引用 1 楼 wind_cloud2011 的回复:
都可以,修改用range来得方便些吧,指定的单元格赋一个值就可

用sql怎么做呢?我做的总是报错

#5


 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test1.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
             OleDbConnection conn = new OleDbConnection(strConn);
             string strExcel = "";
             DataSet ds = new DataSet();
             strExcel = "select * from [sheet1$]";
             OleDbDataAdapter da = new OleDbDataAdapter(strExcel, strConn);
             da.Fill(ds);  
             dataGridView1.DataSource = ds.Tables[0];
这样将数据读取到dataGridView1,在dataGridView1里修改值,再更新回到excel中

#6


引用 5 楼 wind_cloud2011 的回复:
 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test1.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
             OleDbConnection conn = new OleDbConnection(strConn);
             string strExcel = "";
             DataSet ds = new DataSet();
             strExcel = "select * from [sheet1$]";
             OleDbDataAdapter da = new OleDbDataAdapter(strExcel, strConn);
             da.Fill(ds);  
             dataGridView1.DataSource = ds.Tables[0];
这样将数据读取到dataGridView1,在dataGridView1里修改值,再更新回到excel中

你写出的都是我会的代码……
我需要的是update语句和怎样把datagridview中的数据更新到excel中

#7


你可以将编辑后的datagridview数据导出为excel,直接更新excel不行,excel不是数据库那样可以设主键,所以比较麻烦些,
http://blog.csdn.net/caoguangguang/article/details/5788364

#8


你可以参考一下这个
http://www.cnblogs.com/hunpo/archive/2013/02/10/2909787.html