首页 > 解决方案 > 将数据从数据库导出到 Excel 并对列求和?

问题描述

我遇到了一个小问题,我可以将数据库中的数据导出到 Excel 工作表,但在保存新创建的 Excel 工作表之前,我想在我的指定列中添加求和公式,我知道该怎么做使用已创建的旧 excel 文件,但不知道如何在导出过程中创建的新文件上执行此操作。请就如何实现我的愿望任务给我建议。

此致。

这是我到目前为止所做的。

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Excel = Microsoft.Office.Interop.Excel;

namespace ExportToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            Program obj = new Program();
            obj.ExportToExcelMethod();
        }

        public void ExportToExcelMethod()
        {
            try
            {
                SqlConnection conn;
                string connStr = null;
                string query = null;
                string data = null;
                int i = 0;
                int j = 0;

                Excel.Application xlApp;
                Excel.Workbook xlWorkBook;
                Excel.Worksheet xlWorkSheet;
                object misValue = System.Reflection.Missing.Value;

                xlApp = new Excel.Application();
                xlWorkBook = xlApp.Workbooks.Add(misValue);
                xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

                connStr = @"Data Source=GP_DEV\BCDEMO;Initial Catalog=TestDB;Integrated Security=True";
                conn = new SqlConnection(connStr);
                query = "spGetEmployees";
                SqlDataAdapter adpt = new SqlDataAdapter(query, conn);
                DataSet ds = new DataSet();

                try
                {
                    conn.Open();
                }

                catch (Exception)
                {
                    Console.WriteLine("Database connection unsuccessful.");
                    System.Environment.Exit(0);
                }

                adpt.Fill(ds);

                for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
                {
                    for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
                    {
                        data = ds.Tables[0].Rows[i].ItemArray[j].ToString();
                        xlWorkSheet.Cells[i + 1, j + 1] = data;
                    }
                }

                xlWorkBook.SaveAs(@"D:\khubaib\2-4-20\ExportToExcelFile_" + DateTime.Now.ToString("MMddyyyy_HHmmsss") + ".xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
                xlWorkBook.Close(true, misValue, misValue);
                xlApp.Quit();

            }

            catch (Exception)
            {
                Console.WriteLine("Data export unsuccessful.");
                System.Environment.Exit(0);
            }
        }
    }
}

这就是我使用求和公式的方式。

try
            {


                var app = new Excel.Application();
                var workbook = app.Workbooks.Open(template);
                var sheet = workbook.Worksheets[1];
                sheet.Cell("C6").Formula = "SUM(C2:C4)";

                workbook.Save();

            }

            catch (Exception)
            {
                Console.WriteLine("Unable to add the columns.");
                System.Environment.Exit(0);
            } 

标签: c#excelexcel-formula

解决方案


要在保存之前添加总和,只需在保存工作簿之前添加 1 行,如下所示

// Add this line
xlWorkSheet.Cell("C6").Formula = "SUM(C2:C4)";

xlWorkBook.SaveAs(@"D:\khubaib\2-4-20\ExportToExcelFile_" + DateTime.Now.ToString("MMddyyyy_HHmmsss") + ".xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);

您可以使用添加更多公式或文本

xlWorkSheet.Cell("Desire cell name").Formula = "Formula here"

或者

xlWorkSheet.Cell("Desire cell name").Value = "Text here"

推荐阅读