3

重複の可能性:
C# で DataTable を Excel にエクスポートする方法

プロジェクトに TemplateExcel が含まれていて、データテーブルを Excel にエクスポートしたいのですが、このテンプレートをコピーして、保存したい場所にデータと共に保存したいのですが、どうすればよいですか??

4

2 に答える 2

7

次のように、Excel Interop を使用して実行できます。

using System;
using System.Data;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main()
        {
            Excel.Application application = new Excel.Application();
            Excel.Workbook workbook = application.Workbooks.Add();
            Excel.Worksheet worksheet = workbook.Sheets[1];

            DataTable dataTable = new DataTable();
            DataColumn column = new DataColumn("My Datacolumn");

            dataTable.Columns.Add(column);
            dataTable.Rows.Add(new object[] {"Foobar"});

            var columns = dataTable.Columns.Count;
            var rows = dataTable.Rows.Count;

            Excel.Range range = worksheet.Range["A1", String.Format("{0}{1}", GetExcelColumnName(columns), rows)];

            object[,] data = new object[rows,columns];

            for (int rowNumber = 0; rowNumber < rows; rowNumber++)
            {
                for (int columnNumber = 0; columnNumber < columns; columnNumber++)
                {
                    data[rowNumber, columnNumber] = dataTable.Rows[rowNumber][columnNumber].ToString();
                }
            }

            range.Value = data;

            workbook.SaveAs(@"C:\test\whatever123.xlsx");
            workbook.Close();

            Marshal.ReleaseComObject(application);
        }

        private static string GetExcelColumnName(int columnNumber)
        {
            int dividend = columnNumber;
            string columnName = String.Empty;
            int modulo;

            while (dividend > 0)
            {
                modulo = (dividend - 1) % 26;
                columnName = Convert.ToChar(65 + modulo).ToString() + columnName;
                dividend = (int)((dividend - modulo) / 26);
            }

            return columnName;
        }
    }
}

ここで行っているのは、System.Data.DataTableオブジェクトを作成し、データを入力してから Excel にエクスポートすることだけです。これは、クリーンアップ、エラー処理の追加、リファクタリングなどが必要ですが、基礎はそこにあります。

GetExcelColumnNameメソッドはGrahamの功績によるものです。

于 2012-09-21T15:54:53.780 に答える
0

1 この記事は に基づいて使用できますRenderControlが、バインドされたグリッドで作業します

リンク: http://www.codeproject.com/Tips/344604/Export-to-EXCEL-from-Datatable-in-Csharp-Net

2 テーブルに基づいて開発を行うことができます

リンク: http://www.codeproject.com/Tips/406704/Export-DataTable-to-Excel-with-Formatting-in-Cshar

于 2012-09-21T15:37:35.533 に答える