c#操作excel实现创建不同的工作表在每个工作表生成不一样的数据和图表
以下是使用C#操作Excel实现创建不同的工作表,在每个工作表生成不一样的数据和图表的示例代码:
- 添加Excel操作相关的命名空间
using Microsoft.Office.Interop.Excel;
using System.Reflection;
- 创建Excel应用程序对象和工作簿对象
//创建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对象
//释放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();
}
}
}
``
原文地址: https://www.cveoy.top/t/topic/hitE 著作权归作者所有。请勿转载和采集!