以下是使用C#操作Excel实现创建不同的工作表,在每个工作表生成不一样的数据和图表的示例代码:

  1. 添加Excel操作相关的命名空间
using Microsoft.Office.Interop.Excel;
using System.Reflection;
  1. 创建Excel应用程序对象和工作簿对象
//创建Excel应用程序对象
Application excelApp = new Application();

//创建工作簿对象
Workbook workbook = excelApp.Workbooks.Add();
  1. 循环创建多个工作表,并在每个工作表中生成不一样的数据和图表
for (int i = 1; i <= 3; i++)
{
    //创建工作表
    Worksheet worksheet = (Worksheet)workbook.Worksheets.Add();
    worksheet.Name = "Sheet " + i;

    //生成数据
    if (i == 1)
    {
        //在第一个工作表中生成随机数
        Random random = new Random();
        for (int row = 1; row <= 10; row++)
        {
            for (int col = 1; col <= 5; col++)
            {
                worksheet.Cells[row, col] = random.Next(100);
            }
        }
    }
    else if (i == 2)
    {
        //在第二个工作表中生成字符串
        for (int row = 1; row <= 10; row++)
        {
            for (int col = 1; col <= 5; col++)
            {
                worksheet.Cells[row, col] = "Data " + row + "-" + col;
            }
        }
    }
    else if (i == 3)
    {
        //在第三个工作表中生成公式
        for (int row = 1; row <= 10; row++)
        {
            for (int col = 1; col <= 5; col++)
            {
                worksheet.Cells[row, col] = string.Format("=A{0}+B{0}", row);
            }
        }
    }

    //生成图表
    Range chartRange = worksheet.Range["A1:E10"];
    ChartObjects chartObjects = (ChartObjects)worksheet.ChartObjects(Type.Missing);
    ChartObject chartObject = chartObjects.Add(100, 100, 300, 300);
    Chart chart = chartObject.Chart;
    chart.SetSourceData(chartRange, Type.Missing);
    chart.ChartType = XlChartType.xlColumnClustered;
}

//保存Excel文件
workbook.SaveAs("C:\\test.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
  1. 释放Excel对象
//释放Excel对象
workbook.Close(false, Type.Missing, Type.Missing);
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
workbook = null;
excelApp = null;
GC.Collect();

完整代码示例:

using Microsoft.Office.Interop.Excel;
using System.Reflection;

namespace ExcelDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Excel应用程序对象
            Application excelApp = new Application();

            //创建工作簿对象
            Workbook workbook = excelApp.Workbooks.Add();

            for (int i = 1; i <= 3; i++)
            {
                //创建工作表
                Worksheet worksheet = (Worksheet)workbook.Worksheets.Add();
                worksheet.Name = "Sheet " + i;

                //生成数据
                if (i == 1)
                {
                    //在第一个工作表中生成随机数
                    Random random = new Random();
                    for (int row = 1; row <= 10; row++)
                    {
                        for (int col = 1; col <= 5; col++)
                        {
                            worksheet.Cells[row, col] = random.Next(100);
                        }
                    }
                }
                else if (i == 2)
                {
                    //在第二个工作表中生成字符串
                    for (int row = 1; row <= 10; row++)
                    {
                        for (int col = 1; col <= 5; col++)
                        {
                            worksheet.Cells[row, col] = "Data " + row + "-" + col;
                        }
                    }
                }
                else if (i == 3)
                {
                    //在第三个工作表中生成公式
                    for (int row = 1; row <= 10; row++)
                    {
                        for (int col = 1; col <= 5; col++)
                        {
                            worksheet.Cells[row, col] = string.Format("=A{0}+B{0}", row);
                        }
                    }
                }

                //生成图表
                Range chartRange = worksheet.Range["A1:E10"];
                ChartObjects chartObjects = (ChartObjects)worksheet.ChartObjects(Type.Missing);
                ChartObject chartObject = chartObjects.Add(100, 100, 300, 300);
                Chart chart = chartObject.Chart;
                chart.SetSourceData(chartRange, Type.Missing);
                chart.ChartType = XlChartType.xlColumnClustered;
            }

            //保存Excel文件
            workbook.SaveAs("C:\\test.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            //释放Excel对象
            workbook.Close(false, Type.Missing, Type.Missing);
            excelApp.Quit();
            System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
            workbook = null;
            excelApp = null;
            GC.Collect();
        }
    }
}
``
c#操作excel实现创建不同的工作表在每个工作表生成不一样的数据和图表

原文地址: https://www.cveoy.top/t/topic/hitE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录