2

Excelのグラフオブジェクトへのインターフェイスでは、次の2つの方法でのみグラフを表す画像にアクセスできます。

  • 画像をファイルに保存するエクスポート
  • 画像をクリップボードに保存するCopyPicture

これらのオプションはどちらも問題があります(ファイルへの保存は非常に遅く、クリップボードへの保存はユーザーデータを破壊する可能性があります)。

これを行うためのより良い方法はありますか?私が考えることができる唯一の方法は、一時的なRAMディスクを作成し、それを「%TEMP%\ tmp_ram_disk \」の下にマウントして、ディスクへの保存オプションが遅くならないようにすることですが、その方法を確認してくださいまたはそれが可能であれば。これはC#プロジェクトです。

4

2 に答える 2

0

機能する可能性のあるオプションの 1 つは、メモリ マップ ファイルを使用することです。もちろん、そこにはディスクが関与する可能性があるため、ディスクへの標準的なエクスポートと、メモリ マップ ファイルを使用する方法のプロファイルを作成する必要があります (ディスク I/O の遅さがそのアプローチの唯一の懸念事項であると仮定します)。

.Net ですぐに使用できるサポートはまだありませんが、多くの実装が存在する可能性があります。

于 2009-11-11T17:14:57.123 に答える
0

SpreadsheetGear for .NETは、Excel ワークブックを読み込んで、数行のコードでチャートから画像を返すことができます。

namespace GetChartImage
{
    class Program
    {
        static void Main(string[] args)
        {
            // Open the workbook.
            var workbook = SpreadsheetGear.Factory.GetWorkbook(@"t:\tmp\Chart.xlsx");
            // Get a chart named "Chart 1" on the sheet named "Sheet1".
            var chart = workbook.Worksheets["Sheet1"].Shapes["Chart 1"].Chart;
            // Get a System.Drawing.Bitmap image of the chart.
            var bitmap = new SpreadsheetGear.Drawing.Image(chart).GetBitmap();
            // Save it to a file and launch just to see that it worked.
            bitmap.Save(@"t:\tmp\Chart.png", System.Drawing.Imaging.ImageFormat.Png);
            System.Diagnostics.Process.Start(@"t:\tmp\Chart.png");
        }
    }
}

SpreadsheetGear はすべての Excel チャート機能を (まだ) サポートしているわけではありませんが、ライブ ASP.NET の「ダイナミック チャート ギャラリー」サンプルで何ができるかの代表的なサンプルをこちらで確認するか、こちらから無料試用版をダウンロードして自分で試すことができます。

免責事項: 私は SpreadsheetGear LLC を所有しています

于 2009-11-13T03:29:39.757 に答える