C# EXCEL 透视表使用 多行多列的导出透视表
public static string ExportToProvit(System.Web.UI.Page objPage, string[] Pvalues)
{
// Pvalues[0]=行区域数据,Pvalues[1]=列区域数据,Pvalues[2]=数据区域数据
Microsoft.Office.Interop.Excel.Application m_objExcelApp;
Microsoft.Office.Interop.Excel.Workbook m_objExcelWorkBook;
Microsoft.Office.Interop.Excel.Worksheet m_objExcelWorkSheet;
Microsoft.Office.Interop.Excel.Worksheet m_objExcelWorkSheet2;
string strAbsolutePath = clsCommon.GetUploadFilePath(objPage, clsCommon.genmUploadFileKind.Templete, "");
string strRelativePath = clsCommon.GetUploadFileUrl(objPage, clsCommon.genmUploadFileKind.Templete, "");
string strFileName = Pvalues[3].ToString();
if (strFileName != null)
{
strFileName = strFileName.Split('/')[strFileName.Split('/').Length - 1];
}
m_objExcelApp = new Microsoft.Office.Interop.Excel.Application();
m_objExcelApp.DisplayAlerts = false;
m_objExcelWorkBook = m_objExcelApp.Workbooks.Open(strAbsolutePath + strFileName, Type.Missing,
true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
m_objExcelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)m_objExcelWorkBook.Sheets["每日一报透视表"];
DataTable dt = (DataTable)HttpContext.Current.Session["PVDT"];
int row = 1; int col = 1;
if (dt != null)
{
row = dt.Rows.Count+1;
col = dt.Columns.Count;
}
Microsoft.Office.Interop.Excel.PivotCaches objPivot = m_objExcelWorkBook.PivotCaches();
objPivot.Add(Microsoft.Office.Interop.Excel.XlPivotTableSourceType.xlDatabase, "总数据!R1C1:R" + row + "C" + col + "").CreatePivotTable
(m_objExcelWorkSheet.Cells[3, 1], "透视表", Type.Missing, Type.Missing);//"总数据!R2C1:R52C30" 原数据范围SHEET名称!R起始行C起始列:R数据总行数C数据总列数
Microsoft.Office.Interop.Excel.Range objRange = (Microsoft.Office.Interop.Excel.Range)m_objExcelWorkSheet.Cells[3, 1];
objRange.Select();
Microsoft.Office.Interop.Excel.PivotTable objTable = (Microsoft.Office.Interop.Excel.PivotTable)m_objExcelWorkSheet.PivotTables("透视表"); //数据存放的透视表
if (Pvalues[0] != "")
{
string[] pvX=Pvalues[0].Split('@');
for (int i = 1; i <= pvX.Length; i++)
{
Microsoft.Office.Interop.Excel.PivotField objField = (Microsoft.Office.Interop.Excel.PivotField)objTable.PivotFields(pvX[i-1].ToString()); //赋值行数据
objField.Orientation = Microsoft.Office.Interop.Excel.XlPivotFieldOrientation.xlRowField;
objField.Position = "" + i + ""; //表示同为行数据,不同的行数据的顺序
}
}
if (Pvalues[1] != "")
{
string[] pvY = Pvalues[1].Split('@');
for (int i = 1; i <= pvY.Length; i++)
{
Microsoft.Office.Interop.Excel.PivotField objFieldY = (Microsoft.Office.Interop.Excel.PivotField)objTable.PivotFields(pvY[i-1]); //赋值列数据
objFieldY.Orientation = Microsoft.Office.Interop.Excel.XlPivotFieldOrientation.xlColumnField;
objFieldY.Position = ""+i+"";
}
}
if (Pvalues[2] != "")
{
string[] pvZ = Pvalues[2].Split('@');
for (int i = 1; i <= pvZ.Length; i++)
{
Microsoft.Office.Interop.Excel.PivotField objFieldN = (Microsoft.Office.Interop.Excel.PivotField)objTable.PivotFields(pvZ[i-1].ToString()); //赋值数据区域数据
objFieldN.Orientation = Microsoft.Office.Interop.Excel.XlPivotFieldOrientation.xlDataField;
objFieldN.Position = ""+i+"";
}
}
m_objExcelWorkBook.SaveCopyAs(strAbsolutePath + strFileName);
m_objExcelApp.DisplayAlerts = false;
m_objExcelApp.Workbooks.Close();
m_objExcelApp.Quit();
return strRelativePath + strFileName;
}
C# EXCEL 透视表使用 多行多列的导出透视表相关推荐
- EXCEL数据透视表怎么把行转为列
今天有个需求,要将数据透视表的二级行转换为列进行展示.具体如图: 数据透视表为这样: 最终效果为: 操作如下: 第一,将数据透视表改成表格格式,复制到新的表格里 2. CRTL+G 定位空值,输入&q ...
- Python让Excel飞起来—批量处理行、列和单元格
目录 案例01 精确调整多个工作簿的行高和列宽 举一反三 精确调整一个工作簿中所有工作表的行高和列宽 案例02 批量更改多个工作簿的数据格式 举一反三 批量更改多个工作簿的外观格式 案例03 批量替换 ...
- Python读写Excel数据(指定某行某列)
Python读写Excel数据(指定某行某列) 在Python数据处理中,经常需要对Excel表格进行读写操作,本文的代码介绍了如何通过行与列的下标进行数据的读写:代码对数据格式有要求,读数据要求文件 ...
- python读取excel部分值存入另一个excel-python3读取excel文件只提取某些行某些列的值方法...
今天有一位同学给了我一个excel文件,要求读取某些行,某些列,然后我试着做了一个demo,这里分享出来,希望能帮到大家: 首先安装xlrd: pip3 install xlrd 然后上代码: imp ...
- python怎么读取excel某一行某一列-python3读取excel文件只提取某些行某些列的值方法...
今天有一位同学给了我一个excel文件,要求读取某些行,某些列,然后我试着做了一个demo,这里分享出来,希望能帮到大家: 首先安装xlrd: pip3 install xlrd 然后上代码: imp ...
- python读取excel某一行内容-python3读取excel文件只提取某些行某些列的值方法
今天有一位同学给了我一个excel文件,要求读取某些行,某些列,然后我试着做了一个demo,这里分享出来,希望能帮到大家: 首先安装xlrd: pip3 install xlrd 然后上代码: imp ...
- python按行读取excel文件_python3读取excel文件只提取某些行某些列的值方法
今天有一位同学给了我一个excel文件,要求读取某些行,某些列,然后我试着做了一个demo,这里分享出来,希望能帮到大家: 首先安装xlrd: pip3 install xlrd 然后上代码: imp ...
- (专升本)Excel中的隐藏(行、列的隐藏,工作表的隐藏,工作簿的隐藏)
隐藏 行.列的隐藏 隐藏工作表的方法 隐藏工作簿和取消工作簿 行.列的隐藏 #mermaid-svg-JqppfU72PeLliNIt .label{font-family:'trebuchet ms ...
- python复制excel的sheet表不改变表格式及行高列宽(调用win32com库)
python使用win32com库复制excel的sheet到sheet末尾,并对表进行重命名,不改变原有格式及行高列宽. import win32com.client as win32 import ...
- 表的转置 行转列: DECODE(Oracle) 和 CASE WHEN 的异同点
异同点 都可以对表行转列: DECODE功能上和简单Case函数比较类似,不能像Case搜索函数一样,进行更复杂的判断 在Case函数中,可以使用BETWEEN, LIKE, IS NULL, IN, ...
最新文章
- ubuntu下连接mysql出现Access denied for user ‘rose‘@‘localhost‘ (using password: NO)的解决方法
- 百度推ACE交通引擎:不仅是无人车,车路协同新基建我也包了
- 【Android 高性能音频】OboeTester 音频性能测试应用 ( Oboe 输出测试参数 | API 选择 | 音频输出设备选择 | 采样率 | 通道 | 采样格式 | 播放偏好 )
- 北京2008奥运会吉祥物福娃大家庭
- JavaWeb:tomcat服务器安装总结及Http协议
- 贪婪算法在求解最短路径中的应用(JAVA)--Dijkstra算法
- linux mint 安装java_Linux mint 安装步骤
- 个人管理 - Learn More,Study Less!
- ROS入门 SLAM
- Apache配置SSL证书指引
- 李彦宏进军生命科学,成立新公司“百图生科”,致力于实现人类百岁健康梦想
- PHP CURL实现远程下载文件到本地
- PowerDesigner如何生产数据字典
- 用计算机如何扫描文件,打印机扫描文件到电脑方法教程
- Mac 安装 MAT内存分析工具
- Yolo 一小时学会基本操作
- 2021年全球起酥油收入大约4171.6百万美元,预计2028年达到5052.7百万美元,2022至2028期间,年复合增长率CAGR为 2.8%
- 光猫恢复出厂后,逻辑ID重新注册
- matlab 打开avi,Matlab读取avi视频并播放 你必须要知道的
- 男人典范-《万历十五年》的启示