winforms 如何在一次打印中追加多个excel模板的数据

eiee3dmh  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(152)

我正在使用Windows窗体应用程序C#,在将数据导出到Excel时遇到了问题。我对这方面的知识不够,不知道是否可能。我尝试搜索这方面的内容,但似乎无法正确编写问题。我只想知道这是否可能,是否有关于这方面的文档。
我有一个模板:Excel模板:

这就是我想要的打印输出打印输出:

我该如何做到这一点?

41ik7eoe

41ik7eoe1#

看看下面的演示。我把它做得很简单。
创建一个WinForms项目(在本例中,它的名称为WindowsFormsApp 3)。
建立强型别数据集-ProductsDataSet

将新的静态类Extensions添加到项目中

namespace WindowsFormsApp3
{
    using Microsoft.Office.Interop.Excel;

    static class Extensions
    {       

    }
}

在此类中插入以下2个方法
第一种方法

private static void Export(this ProductsDataSet dataSet, Worksheet worksheet)
{
    var products = dataSet.Product.Select();

    for (int i = 1, j = 6; i < products.Length; i++, j += 5)
    {
        worksheet.Range["A1", "D4"].Copy(Type.Missing);
        worksheet.Range[$"A{j}"].PasteSpecial(XlPasteType.xlPasteAll,
            XlPasteSpecialOperation.xlPasteSpecialOperationNone,
            true, Type.Missing);
    }

    for (int i = 0, j = 3; i < products.Length; i++, j += 5)
    {
        worksheet.Range[$"B{j}"].Value = products[i][0];
        worksheet.Range[$"C{j}"].Value = products[i][1];
    }
}

第二种方法

public static void Export(this ProductsDataSet dataSet, string fileName)
{
    Application application = new Application();
    var workbook = application.Workbooks.Open(fileName,
        Type.Missing,
        Type.Missing,
        Type.Missing,
        Type.Missing,
        Type.Missing,
        Type.Missing,
        Type.Missing,
        Type.Missing,
        Type.Missing,
        Type.Missing,
        Type.Missing,
        Type.Missing,
        Type.Missing,
        Type.Missing
        );
    dataSet.Export((Worksheet)workbook.Worksheets[1]);
    application.Visible = true;
}

如下所示自定义Form1

为按钮Click事件订阅以下事件处理程序

private void Button1_Click(object sender, EventArgs e)
{
    using (var openFileDialog = new OpenFileDialog())
    {
        switch (openFileDialog.ShowDialog())
        {
            case DialogResult.OK:

                var directoryName = System.IO.Path
                        .GetDirectoryName(openFileDialog.FileName);
                var fileName = System.IO.Path
                        .GetFileName(openFileDialog.FileName);
                var destFileName = 
                        $"{directoryName}\\{DateTime.Now.Ticks}.{fileName}";
                System.IO.File.Copy(openFileDialog.FileName, destFileName);
                productsDataSet1.Export(destFileName);
                break;
        }
    }
}

我创建了下面的Excel模板文件,类似于你的。程序将打开这个文件,并从productsDataSet1的数据填充它。

这是正在运行应用程序

以下是导出的excel文件中的数据
x1c4d 1x指令集

相关问题