相关疑难解决方法(0)

从Excel粘贴到C#app,保持完全精确

我在Excel电子表格中有数据,其值如下:

  • 0.69491375
  • 0.31220394

单元格格式为百分比,并设置为显示两个小数位.因此它们在Excel中显示为:

  • 69.49%
  • 31.22%

我有一个C#程序解析了这些数据Clipboard.

var dataObj = Clipboard.GetDataObject();
var format = DataFormats.CommaSeparatedValue;

if (dataObj != null && dataObj.GetDataPresent(format))
{
    var csvData = dataObj.GetData(format);
    // do something
}
Run Code Online (Sandbox Code Playgroud)

问题是csvData包含Excel的显示值,即'69 .49%'和'31 .22%'.它不包含额外小数位的完整精度.

我尝试过使用各种不同的DataFormats值,但数据只包含Excel的显示值,例如:

  • DataFormats.Dif
  • DataFormats.Rtf
  • DataFormats.UnicodeText
  • 等等

作为测试,我安装了LibreOffice Calc并将相同的单元格从Excel复制/粘贴到Calc中.Calc保留原始数据的完整精度.

很明显,Excel会将此数据放在其他程序可以访问的位置.如何从我的C#应用​​程序访问它?

编辑 - 后续步骤.

我已经下载了LibreOffice Calc源代码,并且会有一个问题,看看我是否能够从Excel中获取复制数据的完整上下文.

我还GetFormats()调用了从剪贴板返回的数据对象,并获得了24种不同数据格式的列表,其中一些不在DataFormats枚举中.这些措施包括格式,如Biff12,Biff8,Biff5,Format129其他格式不熟悉我之间,所以我会调查这些和回应,如果我做任何的发现...

c# excel paste

7
推荐指数
1
解决办法
8001
查看次数

将 Excel 图表导出到 SVG 创建一个空文件

我正在尝试使用 VBA 以 SVG 格式导出 Excel 图表。

    Set objChrt = ActiveChart.Parent
    objChrt.Activate
    Set curChart = objChrt.Chart
    
    curChart.Export fileName:=fileName, FilterName:="SVG"
Run Code Online (Sandbox Code Playgroud)

如果我用“PNG”替换“SVG”,则导出完全按预期工作并生成有效的 PNG 文件。但是,“SVG”会生成一个空文件。(手动,有一个选项可以在 Excel 365 中另存为 SVG,因此存在导出过滤器)。

根据文档,Filtername 是“图形过滤器在注册表中出现的与语言无关的名称。”,但我在注册表中找不到类似的东西,无论哪种方式,都很难想象 SVG 过滤器名称被命名为“SVG”以外的任何名称。

有没有办法使用 VBA 以 SVG 格式导出图表?


注意:还有一个关于 Chart.export 生成空文件的问题,修复是ChartObject.Activate在导出之前使用。这个问题是不同的,因为代码在“PNG”下正常工作,但在“SVG”下失败(所以这不是与激活或可见性相关的问题)。推荐的修复也不起作用。

excel charts vba export

6
推荐指数
1
解决办法
762
查看次数

标签 统计

excel ×2

c# ×1

charts ×1

export ×1

paste ×1

vba ×1