Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数据从一个excel文件传输到另一个excel文件_C#_Excel - Fatal编程技术网

C# 将数据从一个excel文件传输到另一个excel文件

C# 将数据从一个excel文件传输到另一个excel文件,c#,excel,C#,Excel,我有一个会计程序,可以生成报告并保存在excel文件中。但我不需要这份报告中的大部分专栏。所以我创建了一个程序来删除我不需要的列。在转换后的文件中,我使用3个空列来写笔记、数据等。我每周生成此报告,因此在生成新报告时,我需要转换他,并将我在旧报告中写入的3列转移到新报告中。报告的第一列是UserID,因此我需要传输为该ID编写的注释和数据。新报告中可能缺少旧报告中的某些ID。 我创建了一个Windows窗体应用程序,它应该可以做到这一点,但效果不好。转换新报表,但不传输旧报表中的数据。有什么想法

我有一个会计程序,可以生成报告并保存在excel文件中。但我不需要这份报告中的大部分专栏。所以我创建了一个程序来删除我不需要的列。在转换后的文件中,我使用3个空列来写笔记、数据等。我每周生成此报告,因此在生成新报告时,我需要转换他,并将我在旧报告中写入的3列转移到新报告中。报告的第一列是UserID,因此我需要传输为该ID编写的注释和数据。新报告中可能缺少旧报告中的某些ID。 我创建了一个Windows窗体应用程序,它应该可以做到这一点,但效果不好。转换新报表,但不传输旧报表中的数据。有什么想法吗??这是我的代码:

                OpenExcelWorkbook(OldFilePath);
                _sheet = (Excel.Worksheet)_sheets[1];
                _sheet.Select(Type.Missing);

                var oldData = new DataTable();
                oldData.Columns.Add("Id", typeof(string));
                oldData.Columns.Add("Comment1", typeof(string));
                oldData.Columns.Add("Comment2", typeof(string));
                oldData.Columns.Add("Comment3", typeof(string));

                var range = _sheet.UsedRange;

                for (var i = 1; i <= range.Rows.Count; i++)
                {
                    oldData.Rows.Add(_sheet.Range["A" + i, Type.Missing].Value2, _sheet.Range["J" + i, Type.Missing].Value2, _sheet.Range["K" + i, Type.Missing].Value2,
                        _sheet.Range["L" + i, Type.Missing].Value2);
                }

                _book.Save();
                _book.Close(false, Type.Missing, Type.Missing);
                _app.Quit();
                releaseObject(_sheet);
                releaseObject(_book);
                releaseObject(_app);


                OpenExcelWorkbook(NewFilePath);
                _sheet = (Excel.Worksheet)_sheets[1];
                _sheet.Select(Type.Missing);

                range = _sheet.Range["D:E", Type.Missing];
                range.EntireColumn.Delete(Type.Missing);
                range = _sheet.Range["E:F", Type.Missing];
                range.EntireColumn.Delete(Type.Missing);
                range = _sheet.Range["F:I", Type.Missing];
                range.EntireColumn.Delete(Type.Missing);

                _sheet.Cells[4, 3] = "Invoice";
                _sheet.Cells[4, 4] = "Transfer";
                _sheet.Cells[4, 5] = "Receipt";


                range = _sheet.UsedRange;

                var convDataTable = new DataTable();
                convDataTable.Columns.Add("Id", typeof(string));
                convDataTable.Columns.Add("Comment1", typeof(string));
                convDataTable.Columns.Add("Comment2", typeof(string));
                convDataTable.Columns.Add("Comment3", typeof(string));


                for (var i = 1; i < range.Rows.Count; i++)
                    convDataTable.Rows.Add(_sheet.Range["A" + i, Type.Missing].Value2, "", "", "");

                foreach (DataRow row in convDataTable.Rows)
                {
                    foreach (DataRow row1 in oldData.Rows)
                    {
                        if (row["Id"] == row1["Id"])
                        {
                            row["Comment1"] = row1["Comment1"];
                            row["Comment2"] = row1["Comment2"];
                            row["Comment3"] = row1["Comment3"];
                        }
                    }
                }


                for (var i = 1; i <= convDataTable.Rows.Count; i++)
                {
                    _sheet.Cells[i, 10] = convDataTable.Rows[i - 1]["Comment1"];
                    _sheet.Cells[i, 11] = convDataTable.Rows[i - 1]["Comment2"];
                    _sheet.Cells[i, 12] = convDataTable.Rows[i - 1]["Comment3"];
                }


                _book.Save();
                _book.Close(false, Type.Missing, Type.Missing);
                _app.Quit();
                releaseObject(_sheet);
                releaseObject(_book);
                releaseObject(_app);

我解决了这个问题。这就是解决方案:

 OpenExcelWorkbook(OldFilePath);
                _sheet = (Excel.Worksheet)_sheets[1];
                _sheet.Select(Type.Missing);

                var oldData = new DataTable();
                oldData.Columns.Add("Id", typeof(string));
                oldData.Columns.Add("Comment1", typeof(string));
                oldData.Columns.Add("Comment2", typeof(string));
                oldData.Columns.Add("Comment3", typeof(string));

                var range = _sheet.UsedRange;

                for (var i = 1; i <= range.Rows.Count; i++)
                {
                    var id = "";
                    var comment1 = "";
                    var comment2 = "";
                    var comment3 = "";

                    if (((Excel.Range)_sheet.Cells[i, 1]).Value2 != null)
                        id = ((Excel.Range)_sheet.Cells[i, 1]).Value2.ToString();

                    if (((Excel.Range)_sheet.Cells[i, 10]).Value2 != null)
                        comment1 = ((Excel.Range)_sheet.Cells[i, 10]).Value2.ToString();

                    if (((Excel.Range)_sheet.Cells[i, 11]).Value2 != null)
                        comment2 = ((Excel.Range)_sheet.Cells[i, 11]).Value2.ToString();

                    if (((Excel.Range)_sheet.Cells[i, 12]).Value2 != null)
                        comment3 = ((Excel.Range)_sheet.Cells[i, 12]).Value2.ToString();
                    if (comment1 != "" || comment2 != "" || comment3 != "")
                        oldData.Rows.Add(id, comment1, comment2, comment3);
                }

                _book.Save();
                _book.Close(false, Type.Missing, Type.Missing);
                _app.Quit();
                releaseObject(_sheet);
                releaseObject(_book);
                releaseObject(_app);


                OpenExcelWorkbook(NewFilePath);
                _sheet = (Excel.Worksheet)_sheets[1];
                _sheet.Select(Type.Missing);

                range = _sheet.Range["D:E", Type.Missing];
                range.EntireColumn.Delete(Type.Missing);
                range = _sheet.Range["E:F", Type.Missing];
                range.EntireColumn.Delete(Type.Missing);
                range = _sheet.Range["F:I", Type.Missing];
                range.EntireColumn.Delete(Type.Missing);

                _sheet.Cells[4, 3] = "Invoice";
                _sheet.Cells[4, 4] = "Transaction";
                _sheet.Cells[4, 5] = "Receipt";


                range = _sheet.UsedRange;

                var convDataTable = new DataTable();
                convDataTable.Columns.Add("Id", typeof(string));
                convDataTable.Columns.Add("Comment1", typeof(string));
                convDataTable.Columns.Add("Comment2", typeof(string));
                convDataTable.Columns.Add("Comment3", typeof(string));


                for (var i = 1; i < range.Rows.Count; i++)
                {
                    var id = "";
                    if (((Excel.Range)_sheet.Cells[i, 1]).Value2 != null)
                        id = ((Excel.Range)_sheet.Cells[i, 1]).Value2.ToString();
                    convDataTable.Rows.Add(id, "", "", "");
                }

                foreach (DataRow row in convDataTable.Rows)
                {
                    foreach (DataRow row1 in oldData.Rows)
                    {
                        var oldId = row1[0].ToString();
                        var newId = row[0].ToString();
                        if (newId != "")
                        {
                            if (newId == oldId)
                            {
                                var comment1 = row1[1].ToString();
                                var comment2 = row1[2].ToString();
                                var comment3 = row1[3].ToString();
                                row[1] = comment1;
                                row[2] = comment2;
                                row[3] = comment3;
                                break;
                            }
                        }
                    }
                }


                for (var i = 1; i <= convDataTable.Rows.Count; i++)
                {
                    _app.Cells[i, 10] = convDataTable.Rows[i - 1]["Comment1"].ToString();
                    _app.Cells[i, 11] = convDataTable.Rows[i - 1]["Comment2"].ToString();
                    _app.Cells[i, 12] = convDataTable.Rows[i - 1]["Comment3"].ToString();
                }


                _book.Save();
                _book.Close(false, Type.Missing, Type.Missing);
                _app.Quit();
                releaseObject(_sheet);
                releaseObject(_book);
                releaseObject(_app);
                MessageBox.Show("The converting is finished");
OpenExcelWorkbook(OldFilePath);
_工作表=(Excel.Worksheet)u工作表[1];
_表.选择(类型.缺失);
var oldData=新数据表();
添加(“Id”,typeof(string));
添加(“Comment1”,typeof(string));
添加(“Comment2”,typeof(string));
添加(“Comment3”,typeof(string));
变量范围=_sheet.UsedRange;

对于(var i=1;i我解决了这个问题。这是解决方案:

 OpenExcelWorkbook(OldFilePath);
                _sheet = (Excel.Worksheet)_sheets[1];
                _sheet.Select(Type.Missing);

                var oldData = new DataTable();
                oldData.Columns.Add("Id", typeof(string));
                oldData.Columns.Add("Comment1", typeof(string));
                oldData.Columns.Add("Comment2", typeof(string));
                oldData.Columns.Add("Comment3", typeof(string));

                var range = _sheet.UsedRange;

                for (var i = 1; i <= range.Rows.Count; i++)
                {
                    var id = "";
                    var comment1 = "";
                    var comment2 = "";
                    var comment3 = "";

                    if (((Excel.Range)_sheet.Cells[i, 1]).Value2 != null)
                        id = ((Excel.Range)_sheet.Cells[i, 1]).Value2.ToString();

                    if (((Excel.Range)_sheet.Cells[i, 10]).Value2 != null)
                        comment1 = ((Excel.Range)_sheet.Cells[i, 10]).Value2.ToString();

                    if (((Excel.Range)_sheet.Cells[i, 11]).Value2 != null)
                        comment2 = ((Excel.Range)_sheet.Cells[i, 11]).Value2.ToString();

                    if (((Excel.Range)_sheet.Cells[i, 12]).Value2 != null)
                        comment3 = ((Excel.Range)_sheet.Cells[i, 12]).Value2.ToString();
                    if (comment1 != "" || comment2 != "" || comment3 != "")
                        oldData.Rows.Add(id, comment1, comment2, comment3);
                }

                _book.Save();
                _book.Close(false, Type.Missing, Type.Missing);
                _app.Quit();
                releaseObject(_sheet);
                releaseObject(_book);
                releaseObject(_app);


                OpenExcelWorkbook(NewFilePath);
                _sheet = (Excel.Worksheet)_sheets[1];
                _sheet.Select(Type.Missing);

                range = _sheet.Range["D:E", Type.Missing];
                range.EntireColumn.Delete(Type.Missing);
                range = _sheet.Range["E:F", Type.Missing];
                range.EntireColumn.Delete(Type.Missing);
                range = _sheet.Range["F:I", Type.Missing];
                range.EntireColumn.Delete(Type.Missing);

                _sheet.Cells[4, 3] = "Invoice";
                _sheet.Cells[4, 4] = "Transaction";
                _sheet.Cells[4, 5] = "Receipt";


                range = _sheet.UsedRange;

                var convDataTable = new DataTable();
                convDataTable.Columns.Add("Id", typeof(string));
                convDataTable.Columns.Add("Comment1", typeof(string));
                convDataTable.Columns.Add("Comment2", typeof(string));
                convDataTable.Columns.Add("Comment3", typeof(string));


                for (var i = 1; i < range.Rows.Count; i++)
                {
                    var id = "";
                    if (((Excel.Range)_sheet.Cells[i, 1]).Value2 != null)
                        id = ((Excel.Range)_sheet.Cells[i, 1]).Value2.ToString();
                    convDataTable.Rows.Add(id, "", "", "");
                }

                foreach (DataRow row in convDataTable.Rows)
                {
                    foreach (DataRow row1 in oldData.Rows)
                    {
                        var oldId = row1[0].ToString();
                        var newId = row[0].ToString();
                        if (newId != "")
                        {
                            if (newId == oldId)
                            {
                                var comment1 = row1[1].ToString();
                                var comment2 = row1[2].ToString();
                                var comment3 = row1[3].ToString();
                                row[1] = comment1;
                                row[2] = comment2;
                                row[3] = comment3;
                                break;
                            }
                        }
                    }
                }


                for (var i = 1; i <= convDataTable.Rows.Count; i++)
                {
                    _app.Cells[i, 10] = convDataTable.Rows[i - 1]["Comment1"].ToString();
                    _app.Cells[i, 11] = convDataTable.Rows[i - 1]["Comment2"].ToString();
                    _app.Cells[i, 12] = convDataTable.Rows[i - 1]["Comment3"].ToString();
                }


                _book.Save();
                _book.Close(false, Type.Missing, Type.Missing);
                _app.Quit();
                releaseObject(_sheet);
                releaseObject(_book);
                releaseObject(_app);
                MessageBox.Show("The converting is finished");
OpenExcelWorkbook(OldFilePath);
_工作表=(Excel.Worksheet)u工作表[1];
_表.选择(类型.缺失);
var oldData=新数据表();
添加(“Id”,typeof(string));
添加(“Comment1”,typeof(string));
添加(“Comment2”,typeof(string));
添加(“Comment3”,typeof(string));
变量范围=_sheet.UsedRange;

对于(var i=1;您是否尝试过单步执行代码?注释信息是否进入旧数据?当您到达底部的循环并尝试将其复制到新的电子表格时,注释信息是否仍然存在?您是否尝试过单步执行代码?注释信息是否进入旧数据?当您把它放到底部的循环中,然后你想把它复制到新的电子表格中?