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 透视表使用 多行多列的导出透视表相关推荐

  1. EXCEL数据透视表怎么把行转为列

    今天有个需求,要将数据透视表的二级行转换为列进行展示.具体如图: 数据透视表为这样: 最终效果为: 操作如下: 第一,将数据透视表改成表格格式,复制到新的表格里 2. CRTL+G 定位空值,输入&q ...

  2. Python让Excel飞起来—批量处理行、列和单元格

    目录 案例01 精确调整多个工作簿的行高和列宽 举一反三 精确调整一个工作簿中所有工作表的行高和列宽 案例02 批量更改多个工作簿的数据格式 举一反三 批量更改多个工作簿的外观格式 案例03 批量替换 ...

  3. Python读写Excel数据(指定某行某列)

    Python读写Excel数据(指定某行某列) 在Python数据处理中,经常需要对Excel表格进行读写操作,本文的代码介绍了如何通过行与列的下标进行数据的读写:代码对数据格式有要求,读数据要求文件 ...

  4. python读取excel部分值存入另一个excel-python3读取excel文件只提取某些行某些列的值方法...

    今天有一位同学给了我一个excel文件,要求读取某些行,某些列,然后我试着做了一个demo,这里分享出来,希望能帮到大家: 首先安装xlrd: pip3 install xlrd 然后上代码: imp ...

  5. python怎么读取excel某一行某一列-python3读取excel文件只提取某些行某些列的值方法...

    今天有一位同学给了我一个excel文件,要求读取某些行,某些列,然后我试着做了一个demo,这里分享出来,希望能帮到大家: 首先安装xlrd: pip3 install xlrd 然后上代码: imp ...

  6. python读取excel某一行内容-python3读取excel文件只提取某些行某些列的值方法

    今天有一位同学给了我一个excel文件,要求读取某些行,某些列,然后我试着做了一个demo,这里分享出来,希望能帮到大家: 首先安装xlrd: pip3 install xlrd 然后上代码: imp ...

  7. python按行读取excel文件_python3读取excel文件只提取某些行某些列的值方法

    今天有一位同学给了我一个excel文件,要求读取某些行,某些列,然后我试着做了一个demo,这里分享出来,希望能帮到大家: 首先安装xlrd: pip3 install xlrd 然后上代码: imp ...

  8. (专升本)Excel中的隐藏(行、列的隐藏,工作表的隐藏,工作簿的隐藏)

    隐藏 行.列的隐藏 隐藏工作表的方法 隐藏工作簿和取消工作簿 行.列的隐藏 #mermaid-svg-JqppfU72PeLliNIt .label{font-family:'trebuchet ms ...

  9. python复制excel的sheet表不改变表格式及行高列宽(调用win32com库)

    python使用win32com库复制excel的sheet到sheet末尾,并对表进行重命名,不改变原有格式及行高列宽. import win32com.client as win32 import ...

  10. 表的转置 行转列: DECODE(Oracle) 和 CASE WHEN 的异同点

    异同点 都可以对表行转列: DECODE功能上和简单Case函数比较类似,不能像Case搜索函数一样,进行更复杂的判断 在Case函数中,可以使用BETWEEN, LIKE, IS NULL, IN, ...

最新文章

  1. ubuntu下连接mysql出现Access denied for user ‘rose‘@‘localhost‘ (using password: NO)的解决方法
  2. 百度推ACE交通引擎:不仅是无人车,车路协同新基建我也包了
  3. 【Android 高性能音频】OboeTester 音频性能测试应用 ( Oboe 输出测试参数 | API 选择 | 音频输出设备选择 | 采样率 | 通道 | 采样格式 | 播放偏好 )
  4. 北京2008奥运会吉祥物福娃大家庭
  5. JavaWeb:tomcat服务器安装总结及Http协议
  6. 贪婪算法在求解最短路径中的应用(JAVA)--Dijkstra算法
  7. linux mint 安装java_Linux mint 安装步骤
  8. 个人管理 - Learn More,Study Less!
  9. ROS入门 SLAM
  10. Apache配置SSL证书指引
  11. 李彦宏进军生命科学,成立新公司“百图生科”,致力于实现人类百岁健康梦想
  12. PHP CURL实现远程下载文件到本地
  13. PowerDesigner如何生产数据字典
  14. 用计算机如何扫描文件,打印机扫描文件到电脑方法教程
  15. Mac 安装 MAT内存分析工具
  16. Yolo 一小时学会基本操作
  17. 2021年全球起酥油收入大约4171.6百万美元,预计2028年达到5052.7百万美元,2022至2028期间,年复合增长率CAGR为 2.8%
  18. 光猫恢复出厂后,逻辑ID重新注册
  19. matlab 打开avi,Matlab读取avi视频并播放 你必须要知道的
  20. 男人典范-《万历十五年》的启示

热门文章

  1. 8. JavaScript HTML DOM 事件
  2. 《数学之美》—图论和网络爬虫
  3. QTP11 5发布,改名UFT
  4. 【linux】【git】git报错fatal: HTTP request failed
  5. javaweb项目静态资源被拦截的解决方法
  6. GDAL根据Shape文件切图(java)
  7. C++ 自旋锁简单实现
  8. C++11 emplace操作
  9. Ajax基础 Ajax发送Get请求和post请求
  10. (day 46 - 小根堆 || 动态规划 ) 剑指 Offer 49. 丑数