[英]Format data using pivot table in MS Excel 2010 using c#.net
I have a Excel sheet containing too much raw data.我有一个包含太多原始数据的 Excel 工作表。 Now I want to change the representation of the data in specific format in another Excel sheet in same workbook using Pivot Table facility.现在我想使用数据透视表工具更改同一工作簿中另一个 Excel 工作表中特定格式的数据表示。
As of now to represent the data in required format I am doing few manual steps in Excel, which are mentioned below as such steps provide me resultant Format required by Client:截至目前,为了以所需格式表示数据,我在 Excel 中执行了一些手动步骤,如下所述,因为这些步骤为我提供了客户所需的结果格式:
the Source Format of excel sheet is mentioned below下面提到了excel表的源格式
Now I want to do all these manual steps programmatically using C#.net.现在我想使用 C#.net 以编程方式完成所有这些手动步骤。 the end result should be in Following format:最终结果应采用以下格式:
Resultant Format- Pivot Table结果格式 - 数据透视表
Please mention source code to do the same.请提及源代码来做同样的事情。
Excel.Application excelApp = new Excel.Application();
Excel.Workbook excelWorkBook = excelApp.Workbooks.Open("c:\\Users\\username\\Desktop\\Test.xlsx");
Excel.Worksheet excelworksheet = excelWorkBook.ActiveSheet;
Excel.Worksheet sheet2 = excelWorkBook.Sheets.Add(); // Added new sheet to create Pivot Table
sheet2.Name = "Pivot Table"; // Assigned sheet Name
excelworksheet.Activate();
Excel.Range oRange = excelworksheet.UsedRange;
Excel.PivotCache oPivotCache = (Excel.PivotCache)excelWorkBook.PivotCaches().Add(Excel.XlPivotTableSourceType.xlDatabase, oRange); // Set the Source data range from First sheet
Excel.Range oRange2 = sheet2.Cells[1, 1];
Excel.PivotCaches pch = excelWorkBook.PivotCaches();
pch.Add(Microsoft.Office.Interop.Excel.XlPivotTableSourceType.xlDatabase, oRange).CreatePivotTable(sheet2.Cells[1, 1], "PivTbl_1", Type.Missing, Type.Missing);// Create Pivot table
Excel.PivotTable pvt = sheet2.PivotTables("PivTbl_1") as Excel.PivotTable;
pvt.ShowDrillIndicators = false; // Used to remove the Expand/ Collapse Button from each cell
Excel.PivotField fld = ((Excel.PivotField)pvt.PivotFields("ColumnA")); // Create a Pivot Field in Pivot table
fld.Orientation = Excel.XlPivotFieldOrientation.xlRowField; // Add the pivot field as Row Field
fld.set_Subtotals(1, false); //Remove Subtotals for each row and column
fld = ((Excel.PivotField)pvt.PivotFields("ColumnB"));
fld.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
fld.set_Subtotals(1, false);
fld = ((Excel.PivotField)pvt.PivotFields("ColumnC"));
fld.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
fld.set_Subtotals(1, false);
fld = ((Excel.PivotField)pvt.PivotFields("ColumnD"));
fld.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
fld.set_Subtotals(1, false);
fld = ((Excel.PivotField)pvt.PivotFields("ColumnE"));
fld.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
fld.set_Subtotals(1, false);
fld = ((Excel.PivotField)pvt.PivotFields("ColumnF"));
fld.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
fld.set_Subtotals(1, false);
fld = ((Excel.PivotField)pvt.PivotFields("ColumnG"));
fld.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
fld.set_Subtotals(1, false);
fld = ((Excel.PivotField)pvt.PivotFields("ColumnH"));
fld.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
fld.set_Subtotals(1, false);
fld = ((Excel.PivotField)pvt.PivotFields("ColumnI"));
fld.Orientation = Excel.XlPivotFieldOrientation.xlDataField; // Sort column set as datafield to show the Pivot table as per requirement- It will show the total count of data and not needed so later on we will hide this Column
sheet2.UsedRange.Columns.AutoFit(); // Used to Autoset the column width according to data
//Set Conditional Formating for "Access" Column if Cell of the Access Column Contain W then Set Background color Light Green/ If R then Set Misty Rose Cell's Back Ground Color
Excel.FormatCondition SetBgColorForAccessW = sheet2.get_Range("H:H", Type.Missing).FormatConditions.Add(Excel.XlFormatConditionType.xlTextString, Type.Missing, Type.Missing, Type.Missing, "w", Excel.XlContainsOperator.xlContains, Type.Missing, Type.Missing);
SetBgColorForAccessW.Interior.Color = Color.LightGreen;
Excel.FormatCondition SetBgColorForAccessR = sheet2.get_Range("H:H", Type.Missing).FormatConditions.Add(Excel.XlFormatConditionType.xlTextString, Type.Missing, Type.Missing, Type.Missing, "r", Excel.XlContainsOperator.xlContains, Type.Missing, Type.Missing);
SetBgColorForAccessR.Interior.Color = Color.MistyRose;
sheet2.get_Range("I:I").EntireColumn.Hidden = true; // Used to hide Sort Column as not needed and not have relavent data
pvt.ColumnGrand = false; // Used to hide Grand total for columns
pvt.RowGrand = false; // Used to hide Grand total for Rows
excelApp.DisplayAlerts = false; // Used to hide unappropriate message prompt from Excel
excelworksheet.Delete(); // Delete the Sheet with Raw data because not needed and we created new sheet which represent data in pivot table format
sheet2.Activate(); // Set focus on Sheet Containing data in Pivot table format
sheet2.get_Range("J1", "J1").Select(); // Set focus of column J to hide Pivot Table Field List (Left pane) when we open the file
excelWorkBook.SaveAs(OutputPath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);// Used to Save as and overwrite the Excel file if already exist
excelApp.DisplayAlerts = true; // Reset the property of Excel
excelWorkBook.Close(); // Close the workbook
excelApp.Quit(); // Quit the Excel application;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.