首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#操作Excel刷新数据出现的有关问题,几个月了呀,高手咋还没出现

2013-07-01 
C#操作Excel刷新数据出现的问题,几个月了呀,高手咋还没出现本帖最后由 ykdrj 于 2011-12-16 20:28:19 编辑

C#操作Excel刷新数据出现的问题,几个月了呀,高手咋还没出现
本帖最后由 ykdrj 于 2011-12-16 20:28:19 编辑 代码没有任何报错,手动打开excel右击透视表点击刷新可以刷新到数据(所以数据源不会有问题)
大侠们帮忙看看是不是逻辑有什么问题



using System;
using System.Collections.Generic;
using Excel = Microsoft.Office.Interop.Excel;


namespace ConsoleApplication1
{
    class Program
    {
        
        static void Main(string[] args)
        {
            Excel.Application xlApp = new Excel.ApplicationClass();
            Excel.Workbook xlBook = null;
            Excel.Worksheet xlSheet = null;
            xlBook = xlApp.Workbooks.Open("\\\\127.0.0.1\\test.xlsx");
            string pivotSheetName = "Sheet1";
            foreach (Excel.Worksheet displayWorksheet in xlBook.Sheets)
            {
                if (pivotSheetName == displayWorksheet.Name)
                {
                    xlSheet = displayWorksheet;
                    ((Excel.PivotTable)xlSheet.PivotTables("数据透视表1")).PivotCache().Refresh();
                    System.Console.WriteLine("刷新成功");
                }
            }
            xlApp.DisplayAlerts = false;
            xlApp.Workbooks.Close();
            xlApp.Quit();
        }
     }
}


[解决办法]
你要不试试LINq ?
[解决办法]
你是不是要用程序操作EXCEL 
我这里有例子----平时我是要用到才看的。(我也不很会,下面是我的笔记 )
//下面是读EXCEL
// 要选引入 nopi

private void button1_Click(object sender, EventArgs e)
{
DataTable myT = ExcelToDataTable("c:/供应商导入模板.xls", "sheet1");
StringBuilder strs=new StringBuilder();
for (int j = 0; j < myT.Rows.Count; j++)
{
for (int i = 0; i < 8; i++)
{
strs.Append("\t");
if (myT.Rows[j][i]!= null)
{
strs.Append(myT.Rows[j][i].ToString());
}

}
strs.Append(Environment.NewLine);
}
textBox1.Text = strs.ToString();
}
public static DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)
{
//源的定义
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
//Sql语句
//string strExcel = string.Format("select * from [{0}$]", strSheetName); 这是一种方法
string strExcel = "select * from   [sheet1$]";
//如果只想读取前两列可以用:select * from [Sheet1$A:B]
//如果只想读取A1到B2的内容,就用:select * from [Sheet1$A1:B2]
//定义存放的数据表
DataSet ds = new DataSet();
//连接数据源
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
//适配到数据源
OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
adapter.Fill(ds, strSheetName);
conn.Close();
}



热点排行