我试图使用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中看起来像这样:
我必须调整每张图片开头的每一行,但我不认为这会影响它.是否有办法添加图片/做我想做的事情,还是我必须手动复制粘贴图片?(我以图片为例)
谢谢.
编辑:我尝试过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#发送击键的最快方法是什么.目前我使用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)
我想知道为什么代码中的这些变化会使速度变得非常不同.
我也想知道是否有更快的方式发送许多击键,因为我的应用程序做了很多.(这些测试是在非常慢的上网本上完成的)
谢谢!
这是我的问题.我在Visual Studio中加载了一个C#类文件,我正在处理它.我创建了一个类,并在所述类中创建了一些属性.我崩溃了这些属性:
我用每个侧面的小+
/ -
按钮折叠属性.我想折叠它们中的每一个,因为我有很多其他具有属性的类,我不想看到很多重复的代码(get,set).
关闭它们工作正常,但在我处理同一文件中的其他类后,属性重新打开,所以我可以看到代码:
这种情况经常发生并且非常烦人.我在文件中有很多行,有时我不得不使用小屏幕.这是一个小故障/错误或其他什么?(我使用的是Visual Studio 2010 C#Express)
谢谢你的帮助.
我试图通过使用EPPlus自动在Excel中添加一个简单的折线图.我已经知道包含我想要使用的数据的单元格范围.我希望图形如下所示:
在Before
和After
一个很多比所显示的更多的列下去.
我正在使用此代码创建图形并定位它,但我不确定如何设置图形使用的数据:
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
但我不确定如何正确使用它.如果你能指出我正确的方向,这将是伟大的.
我有一个应用程序,用户可以以发票的形式打印所选项目的文档.一切都运行良好但是在PrintPage
PrintDocument事件中我想要捕获文档或图形,将其转换为位图,以便我可以将其保存到.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
?或者做类似的事情,也许复制文档并将其转换为位图?
所以我有一个简单的方法叫做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
.
谢谢.
所以我已经制作了.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
及其所有子命名空间.
如果你能帮助我,请在这里发帖.