Member 13338075 Ответов: 2

Создайте отчет excel файл с помощью C#


Я хочу создать файл отчета excel с помощью C#, но я не знаю, как создать файл excel с помощью C# и отобразить данные в excel. Я хочу создать ежемесячный отчет о доходах в соответствии с идентификатором заказа, и в конце записей я хочу отобразить общие суммы и подсчеты.
Моя хранимая процедура такова
CREATE	PROCEDURE	Rpt_MonthlyIncome
	,		@Month		INT
	,		@Year		INT
	,		@FromAmount	INT
	,		@ToAmount		INT
	
	AS
	Select	OrderID
,		'Count'=Count(OrderID)
,		'Total'=SUM(Amount)
,		'Month' = DATENAME(MONTH,OrderDate)
,		'Year' = @Year
From	Order
Where	YEAR(OrderDate) = @Year
AND		MONTH(OrderDate) = @Month
And		Amount BETWEEN @FromAmount AND @ToAmount

Group
by		OrderID
,		DATENAME(MONTH,ReadingDate)


Что я уже пробовал:

Я не знаю, как создать файл excel для отображения данных, включая общие суммы и подсчеты.

[no name]

Вы можете попробовать использовать EPPlus. Это доступный пакет nuget, который может выполнить вашу работу.

[no name]

Вы можете попробовать использовать EPPlus. Это доступный пакет nuget, который может выполнить вашу работу.

2 Ответов

Рейтинг:
1

CHill60

Существует множество статей проекта кода, которые помогут вам вот в чем список[^] самого высокого рейтинга


Рейтинг:
1

Maciej Los

Ты должен:
1. подключитесь к SQL Server с помощью Объект sqlconnection[^]
2. получить из хранимых процедур данные с помощью Команда sqlcommand[^]
3. считывание данных в Класс sqldatareader[^]
4. загрузите данные в объект DataTable[^]
5. сбросьте данные в лист Excel (например, с помощью Interop)

DataTable dt = new DataTable();

string sSqlConn = @"connection to your sql server here";
string sComm = @"Your stored procedure name";

using (SqlConnection oSqlConn = new SqlConnection(sSqlConn))
{
    oSqlConn.Open();
    using (SqlCommand oSqlComm = new SqlCommand(sComm, oSqlConn))
    {
        oSqlComm.CommandType = CommandType.StoredProcedure;
        oSqlComm.CommandText = sComm;
        //do not forget to add parameters to oSqlComm if it's necessary
        //oSqlComm.Parameters.AddWithValue("paramName", paramValue);
        SqlDataReader oSqlDr = oSqlComm.ExecuteReader();
        dt.Load(oSqlDr);
        oSqlComm.Dispose();
    }
    oSqlConn.Close();
    oSqlConn.Dispose();
}

Excel.Application xlApp = new Excel.Application();
//excel file location
string sFileName = @"D:\MyReport.xlsx";
Excel.Workbook xlBook = (Excel.Workbook)xlApp.Workbooks.Add();
Excel.Worksheet xlSheet = (Excel.Worksheet)xlBook.Worksheets[1];
//column headers
int r = 0;
int c = 0;
foreach(DataColumn dc in dt.Columns)
{
    xlSheet.Range["A1"].Offset[r, c].Value = dc.ColumnName;
    c++;
}
//data
r=2;
foreach(DataRow dr in dt.Rows)
{
    for(c=0;c<dt.Columns.Count;c++)
    {
        xlSheet.Cells[r, c+1] = dr[c] == DBNull.Value ? string.Empty : dr[c].ToString();
    }
    r++;
}
xlBook.SaveAs(sFileName);
xlBook.Close();
xlApp.Quit();
//clean up
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.ReleaseComObject(xlSheet);
Marshal.ReleaseComObject(xlBook);
Marshal.ReleaseComObject(xlApp);


Приведенный выше код нуждается в ссылках на:
Excel=Microsoft.Office.Interop.Excel
System.Data
System.Data.OleDb
System.Data.SqlClient
System.Runtime.InteropServices