我编写了以下简单的C#控制台应用程序,用于从Excel工作簿导出所有图表。它工作正常,除非打开文档后图表没有滚动到,在这种情况下会生成一个空的图像文件。
using Excel = Microsoft.Office.Interop.Excel;
using System;
using System.Diagnostics;
namespace ExcelExporter
{
class ChartExporter
{
const string EXPORT_TO_DIRECTORY = @"C:\Users\Sandy\Desktop\Excel\Charts";
static void Main(string[] args)
{
Excel.Application app = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application") as Microsoft.Office.Interop.Excel.Application;
ConsoleColor c = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("Export To: ");
Console.ForegroundColor = c;
string exportPath = Console.ReadLine();
if (exportPath == "")
exportPath = EXPORT_TO_DIRECTORY;
Excel.Workbook wb = app.ActiveWorkbook;
foreach (Excel.Worksheet ws in wb.Worksheets)
{
Excel.ChartObjects chartObjects = (Excel.ChartObjects)(ws.ChartObjects(Type.Missing));
foreach (Excel.ChartObject co in chartObjects)
{
Excel.Chart chart = (Excel.Chart)co.Chart;
// app.Goto(co, true);
chart.Export(exportPath + @"\" + chart.Name + ".png", "PNG", false);
}
}
Process.Start(exportPath);
}
}
}
我尝试了几次滚动到该对象的失败尝试;程序底部注释掉的行(app.Goto(co,true)
)仅适用于范围。有没有办法滚动到
ChartObject
s,或者以其他方式确保它们正确导出到图像?
对于测试,使用一个向下1000行的图表的工作簿(足够远,当文档打开时它们毫无疑问是看不见的);在运行程序之前关闭并重新打开文档(一旦滚动到,图表将已呈现并存储在内存中)。
...NET Core 3.1使用Interop.Excel并将VS中的COM ref更改为复制本地
private static void ExportExcelChart()
{
var excelApp = new excel.Application();
var wb = excelApp.Workbooks.Open(@"z:\scratch\acme_inc.xlsx");
var ws = (excel.Worksheet)wb.Sheets[1];
var chartObjects= ws.ChartObjects() as IEnumerable;
foreach (excel.ChartObject co in chartObjects)
{
co.Select();
excel.Chart chart = (excel.Chart)co.Chart;
chart.Export($@"z:\{chart.Name}.png", "PNG", false);
}
wb.Close();
excelApp.Quit();
}
我发现下面的方法对我有用
foreach (Excel.ChartObject co in chartObjects)
{
co.Select();
Excel.Chart chart = (Excel.Chart)co.Chart;
chart.Export(exportPath + @"\" + chart.Name + ".png", "PNG", false);
}
VBA,但同样的想法可能适用于C#...
Dim co As ChartObject, sht As Worksheet, x As Long
x = 1
Set sht = ThisWorkbook.Sheets("Sheet1")
For Each co In sht.ChartObjects
Application.Goto co.TopLeftCell, True
co.Chart.Export "C:\_stuff\test\chart" & x & ".jpg", "JPG", False
x = x + 1
Next co
我有一个excel工作簿,每张工作表有一个图表和多个工作表,我试图将所有图表作为图片导出到PowerPoints中。问题是我的当前代码无法工作。我的代码出现错误: > 简报按预期打开 将复制我在运行前选择的活动工作表的图表 复制的图表粘贴在PowerPoint中 PowerPoint创建下一张幻灯片 现在问题再次复制同一工作表中的同一图表!我希望代码移动到下一张工作表,选择上面的图表,并在下一张幻
问题内容: 我一直试图将Excel中的图表导出为Python中的图像文件(JPG或ING)。我正在看WIn32com。这是我到目前为止所拥有的。 这就是我被困住的地方。我现在需要将所选范围复制到文件中。对文档的任何帮助或指导都可以对我有很大帮助。 我已经基于以下VBA脚本对以上代码进行了建模: 来自以下代码段:http://vbadud.blogspot.com/2010/06/how-to-sa
这个问题涉及一个运行在Ubuntu12.04上的Eclipse Kepler实例。我有一个用例图,我需要将它作为图像文件包含在文档中。我右键点击.di文件,选择导出所有图...然后选择PDF作为文件格式。作为回报,我将得到一个错误窗口,其中包含以下内容: 会话数据: eclipse.buildid=4.3.2.M20140221-1700 java.version=1.6.0_26 java.ve
所有图表都可以导出为 PDF 文件。若要导出当前图表,请点击 。 单一图表 比对图表
我想将股票图表ohlc导出到Excel 我正在使用EPPlus,现在我知道EPPlus不支持绘制股票图表,因此我正在寻找另一个第三方dll,我找到了aspose,但它是一种付费功能。 有人能推荐其他方法导出股票图表用C#代码在Excel中创建股票图表吗? 或者它是可能的创建股票图表ohlc在Excel由C#由EPPlus? 当使用aspal时,我需要在bw代码中使用它,在我保存aspal工作簿的时
我正试图将数据从Excel导入到SQL Server表中,但遇到了这个错误。你能建议如何避免这些吗?