代码之家  ›  专栏  ›  技术社区  ›  Adjit

打开新的Excel工作簿并添加数据

  •  1
  • Adjit  · 技术社区  · 6 年前

    在使用C_的控制台应用程序中,我试图打开一个新的Excel工作簿并向其中添加数据。我可以很好地打开一个新工作簿,但向工作簿添加数据时遇到问题,因为我的范围对象为空,而且我似乎无法钩住刚打开的Excel工作簿。我尝试了一种 ActiveWorkbook , Sheets[1] 还有其他几个人,我好像搞不清楚

    using Microsoft.Office.Interop.Excel;
    using System.Reflection;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Application xl = null;
                _Workbook wb = null;
    
                // Option 1
                xl = new Application();
                xl.Visible = true;
                wb = (_Workbook)(xl.Workbooks.Add(XlWBATemplate.xlWBATWorksheet));
    
                Worksheet sheet = xl.ActiveWorkbook.ActiveSheet;
                Range cell = sheet.Cells[1, 1];
                //ERROR on cell.Value("Test");
                cell.Value("Test");    
            }
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Nemo    6 年前

    此代码可能对您有所帮助。

    using (SaveFileDialog sfd = new SaveFileDialog() { Filter = "Excel Workbook|*.xls" })
                {
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        // creating Excel Application  
                        Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
                        // creating new WorkBook within Excel application  
                        Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
                        // creating new Excelsheet in workbook  
                        Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
                        // see the excel sheet behind the program  
                        app.Visible = true;
                        // get the reference of first sheet. By default its name is Sheet1.  
                        // store its reference to worksheet  
                        worksheet = workbook.Sheets["Sheet1"];
                        worksheet = workbook.ActiveSheet;
                        // changing the name of active sheet  
                        worksheet.Name = "Exported from gridview";
                        // storing header part in Excel  
                        for (int i = 1; i < DGView.Columns.Count + 1; i++)
                        {
                            worksheet.Cells[1, i] = DGView.Columns[i - 1].HeaderText;
                        }
                        // storing Each row and column value to excel sheet  
                        for (int i = 0; i < DGView.Rows.Count - 1; i++)
                        {
                            for (int j = 0; j < DGView.Columns.Count; j++)
                            {
                                worksheet.Cells[i + 2, j + 1] = DGView.Rows[i].Cells[j].Value.ToString();
                            }
                        }
                        // save the application  
                        workbook.SaveAs(sfd.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                        // Exit from the application  
                        app.Quit();
                    }
                }
    

    我在工作中使用了此代码,将DataGridView保存为Excel工作表,它运行得很好。