小编mat*_*ewr的帖子

使用EPPlus将图像添加到Excel中

我试图使用EPPlus多次将相同的图像添加到excel文件中.我使用以下代码来执行此操作:

Image logo = Image.FromFile(path);
ExcelPackage package = new ExcelPackage(info);
var ws = package.Workbook.Worksheets.Add("Test Page");
for(int a = 0; a < 5; a++)
{
    ws.Row(a*5).Height = 39.00D;
    var picture = ws.Drawings.AddPicture(a.ToString(), logo);
    picture.SetPosition(a*5, 0, 2, 0);
}
Run Code Online (Sandbox Code Playgroud)

一切都很完美,所有图像都正确添加,但它们向下拉伸.以下是其中一张图片的样子:

在此输入图像描述

但它在excel中看起来像这样:

在此输入图像描述

我必须调整每张图片开头的每一行,但我不认为这会影响它.是否有办法添加图片/做我想做的事情,还是我必须手动复制粘贴图片?(我以图片为例)

谢谢.

c# epplus

27
推荐指数
2
解决办法
4万
查看次数

将数组拆分为2个数组C#

编辑:我尝试过Take/Skip方法,但是我收到以下错误:

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<string>' to   
'string[]'. An explicit conversion exists (are you missing a cast?)
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么因为我复制了赛义德的代码.

我有一个字符串数组(包含20到300个项目),我想从第一个中间分割成2个独立的数组.

我知道如何使用for循环来做到这一点,但我想知道是否有更快/更好的方法.我还需要能够正确地分割数组,即使它有奇数个项目,例如:

string[] words = {"apple", "orange", "banana", "pear", "lemon"};
string[] firstarray, secondarray;
SplitArray(words, out firstarray, out secondarray); // Or some other function
// firstarray has the first 3 of the items from words, 'apple', 'orange' and 'banana'
// secondarray has the other 2, 'pear' and 'lemon'
Run Code Online (Sandbox Code Playgroud)

c# linq arrays

21
推荐指数
3
解决办法
3万
查看次数

发送击键C#的最快方法

我想知道使用C#发送击键的最快方法是什么.目前我使用SendKeys.Send()SendKeys.SendWait()SendKeys.Flush().

我使用以下代码来计算它们两个工作所需的时间:

Stopwatch sw1 = new Stopwatch();
sw1.Start();
for (int a = 1; a <= 1000; a++)
{
    SendKeys.Send("a");
    SendKeys.Send("{ENTER}");
}
sw1.Stop();
Run Code Online (Sandbox Code Playgroud)

和:

Stopwatch sw2 = new Stopwatch();
sw2.Start();
for (int b = 1; b <= 1000; b++)
{
    SendKeys.SendWait("b");
    SendKeys.SendWait("{ENTER}");
    SendKeys.Flush();
}
sw2.Stop();
Run Code Online (Sandbox Code Playgroud)

2的结果是:

Result 1: 40119 milliseconds
Result 2: 41882 milliseconds
Run Code Online (Sandbox Code Playgroud)

现在,如果我们SendKeys.Flush()进行第二次测试,在循环之外,我们得到:

Result 3: 46278 milliseconds
Run Code Online (Sandbox Code Playgroud)

我想知道为什么代码中的这些变化会使速度变得非常不同.

我也想知道是否有更快的方式发送许多击键,因为我的应用程序做了很多.(这些测试是在非常慢的上网本上完成的)

谢谢!

.net c# testing performance

8
推荐指数
2
解决办法
5637
查看次数

Visual Studio自动打开折叠属性

这是我的问题.我在Visual Studio中加载了一个C#类文件,我正在处理它.我创建了一个类,并在所述类中创建了一些属性.我崩溃了这些属性:在此输入图像描述

我用每个侧面的小+/ -按钮折叠属性.我想折叠它们中的每一个,因为我有很多其他具有属性的类,我不想看到很多重复的代码(get,set).

关闭它们工作正常,但在我处理同一文件中的其他类后,属性重新打开,所以我可以看到代码:

在此输入图像描述

这种情况经常发生并且非常烦人.我在文件中有很多行,有时我不得不使用小屏幕.这是一个小故障/错误或其他什么?(我使用的是Visual Studio 2010 C#Express)

谢谢你的帮助.

c# visual-studio-2010

5
推荐指数
1
解决办法
697
查看次数

使用EPPlus设置折线图使用的数据

我试图通过使用EPPlus自动在Excel中添加一个简单的折线图.我已经知道包含我想要使用的数据的单元格范围.我希望图形如下所示:

在此输入图像描述

BeforeAfter一个很多比所显示的更多的列下去.

我正在使用此代码创建图形并定位它,但我不确定如何设置图形使用的数据:

ExcelChart ec = ws.Drawings.AddChart("Line Time Graph", OfficeOpenXml.Drawing.Chart.eChartType.Line);
ec.Title.Text = "Benchmarks";
ec.SetPosition(_times.Count + 2, 0, 1, 0);
Run Code Online (Sandbox Code Playgroud)

它可能与某些事情有关,ec.Series.Add但我不确定如何正确使用它.如果你能指出我正确的方向,这将是伟大的.

c# excel epplus

5
推荐指数
1
解决办法
1万
查看次数

将打印页面图形转换为位图C#

我有一个应用程序,用户可以以发票的形式打印所选项目的文档.一切都运行良好但是在PrintPagePrintDocument事件中我想要捕获文档或图形,将其转换为位图,以便我可以将其保存到.bmp以后供使用/查看.(注意:本文档中有多个页面)我将其设置如下:

PrintDocument doc = new PrintDocument();
doc.PrintPage += new PrintPageEventHandler(doc_PrintPage);
doc.Print();
Run Code Online (Sandbox Code Playgroud)

然后在PrintPage事件上:

private void doc_PrintPage(object sender, PrintPageEventArgs ev)
{
    // Use ev.Graphics to create the document
    // I create the document here

    // After I have drawn all the graphics I want to get it and turn it into a bitmap and save it.
}
Run Code Online (Sandbox Code Playgroud)

我已经删除了所有ev.Graphics代码,因为它有很多行.有没有办法将图形转换为位图而不更改任何绘制图形的代码PrintDocument?或者做类似的事情,也许复制文档并将其转换为位图?

c# graphics bitmap

3
推荐指数
1
解决办法
5704
查看次数

扩展方法无法正常工作C#

所以我有一个简单的方法叫做Invert:

public static void Invert(this bool value)
{
    value = !value;
}
Run Code Online (Sandbox Code Playgroud)

它位于.dll文件中的静态类中.现在当我去一个新的Winforms项目时,我添加了.dll作为参考,到目前为止一切都很好.现在当我这样做:

bool test = true;
test.Invert();
Run Code Online (Sandbox Code Playgroud)

我没有错误,但是当我这样做时:

MessageBox.Show(test.ToString());
Run Code Online (Sandbox Code Playgroud)

它输出true,好像什么都没有改变.我不确定是否因为我在方法或其他方面所做的事情.但是,如果我去:

MessageBox.Show((!test).ToString());
Run Code Online (Sandbox Code Playgroud)

它输出false.

谢谢.

c# extension-methods pass-by-value

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

全局命名空间C#中的命名空间

所以我已经制作了.dll一些我希望在另一个项目中使用的方法.一切进展顺利.我目前.cs在这里.dll设置的文件是这样的:

GeneralClass.cs
NetworkingClass.cs
TextProcessingClass.cs
Run Code Online (Sandbox Code Playgroud)

在他们每个人的内心是这样的:

namespace General // The name of each .cs file without 'Class'
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以我将拥有这些命名空间:

  • General

  • Networking

  • TextProcessing

我可以通过以下方式在另一个项目中访问它们:

using General;
using Networking;
...
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但我想知道是否有办法这样做:

using MyDll.General;
using MyDll.Networking;
...
Run Code Online (Sandbox Code Playgroud)

所以,一切都将是下MyDll,就像System及其所有子命名空间.

如果你能帮助我,请在这里发帖.

.net c# namespaces

1
推荐指数
2
解决办法
946
查看次数