Tag: multithreading

当我使用线程时,无法使用xlsxwriter进行编写

我正在尝试使用Python中的xlswriter包编写位置的地址到我的Excel表单中。 我面临的问题是,当我尝试使用线程运行函数的值不写入工作表。 看下面的代码:这里行包含所有原始地址的列表。 import threading import xlsxwriter from geopy.geocoders import Nominatim geolocator = Nominatim() outputLocation = 'output.xlsx' workbook = xlsxwriter.Workbook(outputLocation) w_sheet4 = workbook.add_worksheet('openstreet') def openstreet(): p = 1 for row in rows: #rows consists of raw addresses try: rawAddress = str(" ".join(row[1].strip().split())) #here I am normalizing the addresses using openstreet api location = geolocator.geocode(rawAddress) w_sheet4.write(p, […]

Excel对象模型性能问题(跨应用程序域和线程)

我在VB中用VS2010编写了一个用于Office 2007的Excel AddIn,当从PowerPoint中与Excel对象模型交互时,我遇到了严重的性能问题。 请在下面find一个基本testing来演示这个问题(sub test())。 我们以4种不同的方式尝试了这个代码,结果不同: 直接从PowerPoint调用Excel对象模型:平均13秒 通过一个由Excel插件托pipe的WCF服务从PowerPoint调用此代码:平均9秒 通过计时器从Excel地址中调用该代码(启动时,等待20秒,然后启动test()):9 s 通过function区button直接从Excel地址调用代码:800ms 我可以理解为什么1.由于代码与Excel不在同一个AppDomain中,所以速度很慢。 我也可以理解为什么2.和3.因为代码没有在Addin Thread中执行而很慢。 但我想不出任何额外的解决scheme来解决我的性能问题。 最后我有两个问题 1)当我说方法2和方法3由于multithreading而缓慢时,我是否正确? 2)一般来说,我怎样才能使用.Net应用程序的Excel对象模型,而不会有这样的性能损失。 提前感谢您的任何想法。 萨科 Public Sub test(ByVal appE As Excel.Application) Dim chrono As New System.Diagnostics.Stopwatch chrono.Start() appE.Interactive = False appE.ScreenUpdating = False Dim wb As Excel.Workbook = appE.ActiveWorkbook Dim ws As Excel.Worksheet = wb.ActiveSheet Dim rng As Excel.Range = […]

计数具有特定值的单元 – 线程通信

我需要知道特定列(列“C”)中具有特定值(“DE”或“CH”或“AT”)的行数 在这一刻,我正在使用一个for循环,这个工作,但问题是,我的程序需要近10分钟才能通过我的Excel表40k行 有没有办法让这个信息更快? 编辑: 我现在有这个问题,我有3个线程使用相同的Excelsheet,这是没有问题,当我等待“//MessageBox.Show("Es gibt”+ Convert.ToString(count)+“Verträgefür” + searchword +“!”);“ 对于所有线程,并在所有线程都准备就绪后单击确定。 当我不等它的时候,我从Excel中得到2个提示(下面的图片),Programm崩溃。 正如我所看到的,当第一个线程准备就绪时,它会closuresExcel表格和应用程序,其他线程有问题或什么? 当程序崩溃它说:“exception从HRESULT:0x800AC472”(评论)任何想法? 下一个问题是:要从线程获取信息到主窗体,我使用.txt文件,有没有什么好的方法来获取信息返回到主窗体或让线程相互沟通? 这个结论并不是很好:/ class RowCheckThread { public RowCheckThread() { } public void asdf() { string localrow = row; string localsearchword = searchword; string localfile = file; Excel.Application ExcelApp = new Excel.Application(); Excel.Workbook ExcelWorkBook = ExcelApp.Workbooks.Open(localfile); Excel.Sheets ExcelSheets = ExcelWorkBook.Worksheets; Excel.Worksheet Sheet = […]

在Alfresco Explorer中的Excel导出结果

我有一个在.xls文档中导出一些数据的类。 当我点击button导出它开始做,但是这个方法需要很长的时间,我需要用户继续使用应用程序。 我的第一个想法是创build一个线程,但我不能通过主线程的FacesContext到另一个,所以我有另一种解决scheme?

工作线程中Excel Interop性能下降

在工作线程中遇到了非常慢的Excel Interop性能。 这里是我在VSTO项目中的代码,它只是读取指定单元格的值(例如'Sheet1!A1'): private object test(string sheetRange = "Sheet1!A1") { var targetRange = sheetRange.Split('!'); if (targetRange.Length != 2) { return null; } var sheetname = targetRange[0]; var address = targetRange[1]; var workbook = Application.ActiveWorkbook; var sheet = (Excel.Worksheet)workbook.Worksheets[sheetname]; var cell = sheet.Range[address]; return cell.Value; } 当我在UI线程中运行这个代码时,它运行得非常快。 但一旦它在工作线程中运行,性能是相当可怕的(约x50 – x100慢)。 Thread thread = new Thread(() => […]

在单独的线程上从Excel读取WPF应用程序的性能较差

我在我的项目中使用Excel COM API读取和写入Excel 2003中的一些代码。 现在这段代码从两个地方被调用: 1.在Excel加载项本身内,在同一个线程上。 2.从一个WPF应用程序,在一个单独的线程上调用WPF窗口。 问题是,当WPF应用程序调用代码时,从Excel中读取10秒的正常操作需要2分钟。 我想这是因为从一个新的线程调用,但我不是100%肯定。 有任何想法吗?

写入Excel会遗漏一些使用线程的数据

我使用Kinect v2来logging和计算一个主题的骨架,这是一个耗时的任务。 我也同时写入关于骨架的数据到一个Excel工作表,冻结软件。 因此,我使用Thread来处理Excel写作任务。 它运行顺利,但问题是,当我写一个Excel工作表,它错过了一些单元格,如图所示。 任何build议? testThreadStart11 = new ThreadStart(excelwriter); testThread11 = new Thread(testThreadStart11) { IsBackground = true }; testThread11.Start(); public void excelwriter() { _excelWorksheet.Cells[_excelCol, 1] = _excelRowNum; _excelWorksheet.Cells[_excelCol, 2] = limb1.ToString(); _excelWorksheet.Cells[_excelCol, 3] = limb2.ToString(); _excelCol++; _excelRowNum++; }

C#线程和内存泄漏

我正在编写一个通过Interop打开Microsoft Excel的应用程序。 我遇到的问题是如果应用程序本身locking或内存泄漏,我的应用程序被阻止,将不会继续线程。 我有一个父线程查看目录,并在每个文件的循环中写入 转换( “src.xls”, “src.pdf”,NULL); 有时候,例如,如果我们给excel文件types,它不能打开它将locking。 这将locking我的线程,迫使我不得不杀死进程。 public static class ExcelConverter { public static bool Convert(string srcFile, string destinationFile, object[] parameters) { bool bStatus = false; Workbook excelWorkBook = null; Excel.Application application = null; try { application = new Excel.Application(); object missingParam = Type.Missing; excelWorkBook = application.Workbooks.Open(srcFile); if (excelWorkBook != null) { excelWorkBook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, […]

在C#中从后台线程更新Excel 2003中的checkbox有时会失败

我在C#中创build了一个实现用户定义函数的加载项。 这些UDF立即返回,但它们控制后台asynchronous过程。 这些程序的状态需要被监视并呈现给Excel。 我select使用checkbox显示状态。 后台线程然后更新链接到特定后台程序的checkbox。 我使用try / catch块将调用包装到Excel模型中,并在延迟后重试调用,以防Excel未准备好引发exception。 这个机制也能正常工作。 问题是有时,即使修改checkbox的代码运行成功,checkbox本身也不会在Excel中修改。 我已经对我正在更改的checkbox属性进行了完整性检查,可以看到它们在日志中没有更改: checkBox.Value = false; checkBox.Interior.Color = 0x00DDDDDD; // light grey in AABBGGRR format checkBox.Caption = "Off"; // this sometimes prints the values the checkbox had before the above line LogDebug( "Color: " + checkBox.Interior.Color + " Value:" + checkBox.Value + " caption:" + checkBox.Caption ); […]

为什么“mscorlib.dll中发生”System.IO.IOException“types的未处理的exception(由某个.exelocking)”发生?

附加信息:进程无法访问文件“E:\ Data.xls”,因为正在被另一个进程使用。 在c#中我是一个漂亮的菜鸟,试图将一些数据保存到一个.xls文件中,该文件将五个图像帧中的数据一个接一个地收集起来,然后保存到一个.xls文件中。 但是我一直在跑 mscorlib.dll中发生未处理的types为“System.IO.IOException”的exception其他信息:进程无法访问文件“E:\ Data.xls”,因为它正在被另一个进程使用。 我在SO上发现了很多这样的问题,但无法解决问题。 这是我的代码: string path = @"E:\Data.xls"; if (!File.Exists(path)) { File.Create(path); File.Create(path).Dispose(); } StringBuilder sb = new StringBuilder(); sb.AppendLine(x + "\t" + y + "\t" + pixel1.R + "\t" + pixel1.G + "\t" + pixel1.B); sb.AppendLine(x+1 + "\t" + y + "\t" + pixel2.R + "\t" + pixel2.G + "\t" […]