Questions tagged «excel»

7
从VBA到C#的团队成员质疑
背景 去年,我被要求为大约10个用户创建一个用于业务计划的工具。这项工作是由另一个IT团队代表完成的,该团队将工作“分包”给我,并且由于项目期限在他们这边有些计划外,我不得不匆忙实施。 当时,我们决定最快的方法是使用VBA创建Excel工作簿,然后让用户从Intranet下载此VBA增强的工作簿以在其PC上使用。在这种情况下,Excel是一个约束,因为我们使用的计划系统(即数据库)只能通过Excel加载项进行交互,该加载项必须在打开计划工作簿的同时加载。但是,当时VBA并不是一个约束。 我创建了约4,000行VBA代码的工作簿,虽然我尝试分离数据层和表示层,但由于项目截止日期,所以在所有情况下都无法做到。老实说,虽然我为创建此工作簿感到自豪,但同时我感到有些失望,因为它在编码和部署到用户方面都可以做得更好。 今天 回到今天,IT团队再次来找我,要求提供类似的工作簿(这样我就可以重用上面其他工作簿的部分内容),但这一次它变得更加复杂,将被更多的用户使用( 200左右)。 但是,这次的计划要好一些,我可以看到我们有更多的时间来计划事情。基于此,我考虑了该解决方案和基础架构,因为针对100个用户的编程比对10个用户的编程影响更大。因此,我向团队建议,也许我们应该考虑将现有代码迁移到C#解决方案,以便我们可以以更精细的方式管理代码。我仍将其视为使用VSTO / Excel-DNA编写的加载项,然后可以将其部署到用户。 两周前,我与IT团队讨论了这一问题,一切似乎都很好,直到昨天,我收到一个团队(不了解VBA或C#)的邮件,询问我们为什么应该在C#中启动这个新项目,而不是使用与以前相同的方法。他们的一些担忧是: 这是一个非常重要的项目,因此它必须能够工作-C#解决方案不能像现有的基于VBA的解决方案那样稳定或有效。 我们将不得不舍弃[I]在VBA解决方案中所做的事情,并在C#中从头开始重新创建它。 有人必须支持两种单独的解决方案,一种在VBA中,一种在C#中。[实际上,他们目前没有任何人支持,我通常会介入]。 现在,我可以在某种程度上理解他们的一些担忧,但是我需要决定下一步的工作以及如何处理这些问题。就个人而言,我想用C#实施,因为我认为它更适合于构建这样的“企业”解决方案。此外,我想借此机会提高我的C#技能,因为我目前不像VBA那样胜任C#的能力,并且我希望通过这样的项目将我带入“下一个级别”。 我准备了一些要点,可以用来说服他们说C#解决方案更适合该项目,这是我到目前为止的目标: 单元测试。 源代码控制。 代码文档-用于将知识转移给其他支持人员。 更好的编码约定-可以使用ReSharper之类的东西来加强更好的命名和结构。 更好的IDE-减少由于错误突出显示而导致的错误。 通过组件实现更高的模块化-可以促进将来工具的重用。 托管部署-可以控制使用此工具的人员。 问题:我还能说些什么来说服他们?还是我想尽全力去完成这个项目?我应该保持安静,还是在VBA中这样做吗? 我知道,仅因为新语言的“较新”或被视为“较凉爽”而改用新语言就不应作为决策的基础,因此我拒绝将其作为决策要点-这是关于事实的。 另外,我不要求在C#和VBA作为语言之间进行字面比较,因为在SO上有很多比较。

4
工作流程:在Git中使用无锁定的二进制文档格式(从Subversion移出)
我们是一家软件咨询公司,为不同客户提供大量项目。传统上我们使用Subversion,但目前正在考虑迁移到Git。 我们生成的文档中有很大一部分与客户共享(需求,全局设计,测试规范等),我们使用MS Office生成这些文档。在Subversion中,我们可以使用其“锁定”功能来确保没有人同时编辑同一文档。在Git中,您无法执行此操作,因为git具有分布式特性,因此它没有锁。 锁实际上只是一种通信机制,但它是一种非常有效的机制。 当前,我们的代码和面向客户的文档通常位于不同svn存储库的不同子文件夹中。转到git时,您会建议我们做什么?我看到了一组选项: 我们将svn存储库移至git 1-on-1。我们不使用Office文件上的锁,而是执行git人们建议的操作,并以某种方式尝试更改工作流以对其进行修复。这可以在任何文档编辑的分支中进行,然后将其合并到审阅中。这种方法突破了例如包含项目管理信息的Excel工作表;他们很容易被团队成员编辑(我们鼓励这样做),但不受任何正式审查程序的约束 我们将git用于代码,将svn用于文档和项目管理。这样做的缺点是,某些更多具有设计意义的文档不会“靠近”其指定的代码,从而增加了人们忘记更新它们的机会。此外,每个人都必须使用和理解两组工具。就是说,对于非面向客户的设计文档来说,这可能是转向基于文本的文档工具(胶乳,降价,HTML等)的绝佳机会。 与1类似,但我们修改了一个git lock命令,该命令执行svn lock对我们所做的事情(适当地切换了只读标志并通过某种方式与服务器同步)。 我不赞成在DVCS中锁不起作用的说法,因为系统甚至在您完全脱机时也可以工作。SVN锁也可以被覆盖。他们是一种沟通机制。没有某种类型的网络连接,您将无法使计算机进行大量通信。 我们不能成为唯一一个对svn lock我们的工作流程适应性非常满意的商店,对吗? 有什么想法或提示吗? 我找到了/programming/119444/locking-binary-files-using-git-version-control-system,但是讨论的内容是技术性的;我正在寻找解决或避免两个团队成员同时编辑同一二进制文件的实际问题的方法。
16 git  svn  dvcs  excel  word 

3
在代码中生成Excel(xlsx)文件的良好设计模式是什么?
有关更多信息,请参见底部的我的更新。 有时,我有一些项目必须将某些数据输出为Excel文件(xlsx格式)。该过程通常是: 用户单击我的应用程序中的一些按钮 我的代码运行数据库查询并以某种方式处理结果 我的代码使用Excel com互操作库或某些第三方库(例如Aspose.Cells)生成* .xlsx文件 我可以轻松地找到有关如何在线执行此操作的代码示例,但是我正在寻找一种更强大的方法来执行此操作。我希望我的代码遵循一些设计原则,以确保我的代码可维护且易于理解。 这是我最初尝试生成xlsx文件的样子: var wb = new Workbook(); var ws = wb.Worksheets[0]; ws.Cells[0, 0].Value = "Header"; ws.Cells[1, 0].Value = "Row 1"; ws.Cells[2, 0].Value = "Row 2"; ws.Cells[3, 0].Value = "Row 3"; wb.Save(path); 优点:不多。它可以工作,所以很好。 缺点: 单元格引用是经过硬编码的,因此在我的代码中到处都是乱七八糟的数字。 如果不更新许多单元格引用,则很难添加或删除列和行。 我需要学习一些第三方库。一些库的使用方式与其他库一样,但是仍然存在问题。我有一个问题,com互操作库使用基于1的单元格引用,而Aspose.Cells使用基于0的单元格引用。 这是一种解决上面列出的缺点的解决方案。我想将数据表当作自己的对象,可以在不深入了解单元操作和不干扰其他单元格引用的情况下随意移动和更改数据。这是一些伪代码: var headers = new Block(new string[] …

5
有哪些方法可以向同事展示数据库+应用程序解决方案优于Excel的优势?
我在一家到处都有Excel电子表格的公司工作。由于我的同事不是程序员,所以我确定他们没有想到可能会有更好/更容易/更有生产力的数据管理方式。自然,我提倡使用可以利用您在关系数据库和交互式前端中找到的功能的各种应用程序,以适应当前分散在不同电子表格中的各种工作流的需求。 我的问题是,我试图向各方面解释这种系统的优点,但是由于没有从头开始编写它们,我很难说服它们,甚至只是将它们暴露在绿色的草地上。人们通常都了解Excel(即使他们不是超级用户),但是当出现“数据库”一词或开始谈论“代码”时,也许会变得很模糊。 谁能提出一种方法,以证明通过从电子表格切换到实际应用程序可以改善工作流程吗?

2
Python的幂运算符与右边关联的理由是什么?
我正在编写代码以解析数学表达式字符串,并注意到在Python中对链式幂运算符进行求值的顺序与Excel中的顺序不同。 从http://docs.python.org/reference/expressions.html: “因此,在无括号的幂和一元运算符序列中,运算符是从右到左求值的(这不限制操作数的求值顺序):-1 * 2得出-1。” * 这意味着,在Python中: 2**2**3被评估为2**(2**3) = 2**8 = 256 在Excel中,它的工作方式与之相反:2^2^3被评估为(2^2)^3 = 4^3 = 64 我现在必须为自己的解析器选择一个实现。Excel顺序更容易实现,因为它反映了乘法的求值顺序。 我问办公室周围的一些人,他们对评估的直觉是什么2^2^3,得到的回应不一。 有人知道有任何有利于Python实现的理由或考虑吗?如果您没有答案,请评论您从直觉中获得的结果- 64或256?

6
从2000年代开始的软件解决方案,我应该尝试修补还是重新制作整个产品吗?
我被派去讨论某个公司当前正在使用的系统以及应该如何处理。 该公司生产各种纸箱展示架。开发该系统是为了跟踪客户,订单和价格。自从创建系统以来,发生了很多事情,并且正如经理所描述的那样,系统现在已“ 锁定 ”和“ 有问题 ”,我将其翻译为“非动态”和“不稳定”。 有关系统的一些信息 它是在2000年左右开发的 相当小的系统,2-5个用户,6个表格,〜8个表,平均数据量 建立在早期的Visual Basic上,是通过拖放设计创建的表单。界面基本上只是一个带有菜单和某些形式的窗口 使用MSSQL数据库(SQL2005服务器)存储数据并使用ODBC驱动程序进行查询,在此系统之前,数据是从excel迁移而来,在excel之前,它是用手工和纸来处理,计算和编写的 用户在Microsoft XP环境(及更高版本)中工作 他们的主要问题是他们无法正确地调整和计算价格,无法添加新的纸箱类型等,因为它们无法(或者更确切地说,他们不知道如何)触摸服务器上的数据。 我建议了3种可能的解决方案 尝试修补当前系统 创建一个全新的界面(最好是类似的环境,基于VB.net或VB) 考虑到它是一个很小的系统,请将其重新带到Excel解决方案中 可能还有更多选择,但是这些是我能想到的。 我的问题是 我应该推荐什么,为什么? 这些替代方案的利弊是什么? 还有其他(可能更好)的选择吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.