2011-01-04 13 views
1

私は、いくつかのアイテムを含むSharepoint(2007)のリストを持っています。これらのアイテムの1つをクリックすると、多くのマクロを含むExcel(2003)ファイルが開きます。私はこの(Sharepoint)アイテムのIDを取得し、それをExcelファイルのセルに送信する必要があります。マクロが実行され、このIDに必要なすべてのデータが取得されます。Sharepoint ListのアイテムIDをExcelファイルに送信するにはどうすればよいですか?

アイテムのIDをExcelファイルに送信するにはどうすればよいですか?

ありがとう

答えて

0

新しいExcelファイルにDataTableを一度書きます。したがって、関数のパラメータをDataTableからSPList/SPLisItemに変更し、既存のファイルに書き込むことができます(私の現在の実装では、毎回新しいExcelファイルに書き込みます。この関数を実行します)。また、Excel(COM)オブジェクトの参照を追加することを確認してください。 Microsoft Excel 12.0オブジェクトライブラリなど。私にもっと助けが必要な場合は教えてください。 C#ASP.NETとSharePointを使用してマクロを実行するための

public void excelgenerate(DataSet ds) 
    { 

     Microsoft.Office.Interop.Excel.Application oAppln; 
     //declaring work book 
     Microsoft.Office.Interop.Excel.Workbook oWorkBook; 
     //declaring worksheet 
     Microsoft.Office.Interop.Excel.Worksheet oWorkSheet; 
     oAppln = new Microsoft.Office.Interop.Excel.Application(); 
     oWorkBook = (Microsoft.Office.Interop.Excel.Workbook)(oAppln.Workbooks.Add(true)); 
     Microsoft.Office.Interop.Excel.Range wRange; 
     foreach (DataTable table in ds.Tables) 
     { 
      oWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)(oWorkBook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing)); 
      oWorkSheet.Name = table.TableName; 
      oWorkSheet.Activate(); 
      DataRow dr = table.Rows[0];     
      string path = dr["Path"].ToString(); 
      if (path.Length > 0) 
      { 
       string[] mylist = path.Split('\\'); 
       var features = Array.FindLastIndex(mylist, str => str.Equals("Features")); 
       string stringmine = "Type ---> " + mylist[4] 
        + "/" + mylist[5] 
        + "  Project Name ---> " + mylist[6] 
        + "  Feature Name ---> " + mylist[features + 1]; 
       oWorkSheet.Cells[1, 1] = stringmine; 
       Microsoft.Office.Interop.Excel.Range colrange = oWorkSheet.get_Range(oWorkSheet.Cells[1, 1], oWorkSheet.Cells[1, 8]); 
       colrange.Merge(true); 

      } 


      int ColumnIndex = 0; 

      foreach (DataColumn col in table.Columns) 
      { 
       ColumnIndex++; 
       oWorkSheet.Cells[2, ColumnIndex] = col.ColumnName; 
       wRange = (Microsoft.Office.Interop.Excel.Range)oWorkSheet.Cells[2, ColumnIndex]; 
       wRange.Font.Bold = true; 
      } 
      int rowIndex = 1; 
      foreach (DataRow row in table.Rows) 
      { 
       rowIndex++; 
       ColumnIndex = 0; 
       foreach (DataColumn col in table.Columns) 
       { 
        ColumnIndex++; 
        oWorkSheet.Cells[rowIndex + 1, ColumnIndex] = row[col.ColumnName].ToString(); 
       } 
      } 
      oWorkSheet.Columns.AutoFit(); 
      oWorkSheet.Rows.AutoFit(); 

     }   

     string fileName = System.Guid.NewGuid().ToString().Replace("-", "") + ".xls"; 
     Console.WriteLine("Number of sheets written : " + oWorkBook.Worksheets.Count); 
     oWorkBook.SaveAs(fileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, null, null, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, false, false, null, null, null); 
     oWorkBook.Close(null, null, null); 
     oAppln.Quit(); 

    } 

、私はこのarticle

を使用して、あなたをお勧めします、それはあなたの質問に答えることを願っています!

+0

ASP.NETのオフィスオートメーション(Office.Interop.Excel)を使用すると、多くの問題が発生します - http://support.microsoft.com/kb/257757-この資料は以下の製品について記述したものです。クライアントサイドアプリケーションの便利なコードサンプルになります。 – Ryan

0

SharePointリストデータをワークシートに直接リンクできず、マクロをそのスプレッドシートにインポートできない場合を除き、以下の手順で必要なものが得られます。それはあまりにも単純なようです...あなたがやろうとしていることに対してはうまくいかない理由がなければなりません。いずれにしても、この作業を行う手順は次のとおりです。

1)SharePointリストに実際に一意の値を適用するインデックス付き列があることを確認します。これを確認するには、ドキュメントライブラリの設定を確認します。列リストの下に索引列があることを確認してください。存在しない場合は、「新しい列の作成」アクションを選択してデータ型を選択し、「一意の値を適用する」というラジオボタンを選択していることを確認してください。

2)ライブラリのメインページメニューの[excel to excel]オプションを使用して、ライブラリをExcelにエクスポートします。これにより、デフォルトでデータリンクが確立され、データタブに移動して「接続」を選択すると、コンピュータのデフォルトの場所にExcelのクエリファイルが保存されます。

3)データソースにリンクされているスプレッドシートにマクロをコピーし、マクロ内の参照を調整して、SharePointリストから必要な情報を抽出します。

これが役に立ちます。

関連する問題