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

时间:2018-05-23 22:22:20

标签: c# excel

从使用C#的控制台应用程序中,我尝试打开一个新的Excel工作簿并向其中添加数据。我可以很好地打开一个新的工作簿,但是我遇到了将数据添加到工作簿的问题,因为我的范围对象是null,我似乎无法挂钩刚刚打开的excel工作簿。我尝试了ActiveWorkbookSheets[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 个答案:

答案 0 :(得分:2)

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

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表,并且运行良好。