2009-07-01 3 views
11

Мне нужно создать сводную таблицу в .net. Нельзя использовать сторонний элемент управления (если только он не является бесплатным). Я попытался найти документацию, в которой объясняется, как создать сводную таблицу (алгоритм или шаги) в целом, но почти все связано с excel. Кто-нибудь знает, как создать сводную таблицу в C# ??? Сводная таблица в C#

+0

Вы пытаетесь создать таблицу поворота excel или пытаетесь отобразить какие-то поворотные данные в GridView? – Jimmy

+0

Я пытаюсь отобразить данные в GridView. – Sheraz

+0

Что такое источник данных? Если в какой-то форме SQL, я бы предложил вам сделать это на SQL. Есть ли вероятность, что вы можете использовать LINQ? –

ответ

2

MS-Access имеет команду TRANSFORM (которая выполняет поворот), поэтому вы можете использовать ADO.NET для запроса файла MSD-доступа mdb, а затем использовать сквозные запросы, чтобы добраться до источника данных, t pivot (обычно MS-SQL/T-SQL). Я сделал доказательство концепции этого, и он работал и был около 5000 LOC короче, чем реализация VBScript, которая использовала опорную точку с использованием массивов.

Обычные пренебрежительные замечания о MS-Access здесь не применяются, поскольку вы фактически не храните данные в MS-Access.

+0

любой шанс опубликовать пример здесь – Sheraz

+0

Команда преобразования: http://msdn.microsoft.com/en-us/library/bb208956.aspx Использование MS-Access через .NET http://www.csharphelp.com/archives/ archive70.html И остальное включает в себя ссылки на таблицы ваших любимых представлений или выполнение сквозного запроса/хранимой процедуры для исходных данных: http://www.aspfree.com/c/a/Microsoft-Access/On-Using-Passthrough-Queries-in -MS-Access / – MatthewMartin

6

Помощь здесь http://msdn.microsoft.com/en-us/library/aa172756%28SQL.80%29.aspx

Actual Таблица:

Year Quarter Amount  
1990  1  1.1 
1990  2  1.2 
1990  3  1.3 
1990  4  1.4 
1991  1  2.1 
1991  2  2.2 
1991  3  2.3 
1991  4  2.4 
1992  4  2.4 

Желаемая Выход: (Здесь Q за квартал)

Year  Q-1  Q-2  Q-3  Q-4  
1990  1.1  1.2  1.3  1.4 
1991  2.1  2.2  2.3  2.4 
1992  0.0  0.0  0.0  2.4 

Запрос:

Use Northwind  
GO 

CREATE TABLE Pivot  
(Year  SMALLINT,  
    Quarter TINYINT,  
    Amount DECIMAL(2,1))  
GO 

INSERT INTO Pivot VALUES (1990, 1, 1.1)  
INSERT INTO Pivot VALUES (1990, 2, 1.2)  
INSERT INTO Pivot VALUES (1990, 3, 1.3)  
INSERT INTO Pivot VALUES (1990, 4, 1.4)  
INSERT INTO Pivot VALUES (1991, 1, 2.1)  
INSERT INTO Pivot VALUES (1991, 2, 2.2)  
INSERT INTO Pivot VALUES (1991, 3, 2.3)  
INSERT INTO Pivot VALUES (1991, 4, 2.4)  
INSERT INTO Pivot VALUES (1992, 4, 2.4) 
GO 

SELECT * FROM Pivot  
GO 

SELECT Year,  
    SUM(CASE Quarter WHEN 1 THEN Amount ELSE 0 END) AS Q1,  
    SUM(CASE Quarter WHEN 2 THEN Amount ELSE 0 END) AS Q2,  
    SUM(CASE Quarter WHEN 3 THEN Amount ELSE 0 END) AS Q3,  
    SUM(CASE Quarter WHEN 4 THEN Amount ELSE 0 END) AS Q4  
FROM Northwind.dbo.Pivot  
GROUP BY Year  
GO 

Другой выход:

SELECT P1.*, (P1.Q1 + P1.Q2 + P1.Q3 + P1.Q4) AS YearTotal  
FROM (SELECT Year, 
      SUM(CASE P.Quarter WHEN 1 THEN P.Amount ELSE 0 END) AS Q1, 
      SUM(CASE P.Quarter WHEN 2 THEN P.Amount ELSE 0 END) AS Q2, 
      SUM(CASE P.Quarter WHEN 3 THEN P.Amount ELSE 0 END) AS Q3, 
      SUM(CASE P.Quarter WHEN 4 THEN P.Amount ELSE 0 END) AS Q4 
    FROM Pivot AS P 
    GROUP BY P.Year) AS P1 
GO 
0

CellSetGrid является открытым исходным кодом ASP .Net (C#) управления, который предлагает сводную таблицу как функциональность.

Это используется, чтобы быть доступны для скачивания на этом сайте: http://www.SQLServerAnalysisServices.com

Сейчас сайт не размещает этот контроль больше. Поэтому я загрузил источник контроля - CellSetGrid here.

  1. Вы можете построить источник
  2. Добавить это как Control в панели инструментов Visual Studio.
  3. Перетащите и контроль падения на веб-форму
  4. Установите строку подключения к кубу
  5. Это покажет все размеры и группы мер, так что вы можете перетащить п падение, что вы хотите получить сводную таблицу, как функциональность
Смежные вопросы