Tag: .net

在使用C#.NET生成的Excel表格中显示页码

有没有人有一个想法,如何包括或input在使用C#代码生成的Excel表中的页码。 我使用Microsoft.Office.Interop.Excel中提供的库来生成文件。 但是在默认的输出中,我看不到页码。 我知道要启用此通过 Excel的选项(查看 – >页眉和页脚…),但我想通过C#自动化。 这是可能的,如果是的,请分享相同的片段。 感谢不断学习者

打开位于插件文件夹中的XML文件

在VSTO Excel插件中的代码是: Dim XMLDoc As XElement = XElement.Load("XMLFile1.xml") (“ 找不到文件”C:\ Users \ doug \ Documents \ XMLFile1.xml “)生成一个FileNotFound错误。它正在My Documents文件夹中查找,但是该XML文件位于VS Projects文件夹中项目。 我已经将XML文件的“复制到输出目录”属性设置为“始终复制”。 当我更改代码以包含代码工作的XML文件的完整path时。 另外,如果我将上面的代码包含在Windows控制台或其他types的项目中,它将正确运行。 我只是在Excel地址中得到它。 以上是VSTO 2008 / Excel 2003和VSTO 2010 / Excel 2010的情况。

从.Net插入简单数据到Excel文件的最简单的方法

我有一个excel文件,有~10列和1-20行。 我需要插入1-20行与各种数据元素。 我想知道是否有一种方法,我可以把一些标签的Excel文件,所以他们可以find并replace。 将某列标记为“名称”的内容。 这样的代码我可以说: Name[0] = object.name; 我不确定这个确切的方法是否可行,但是我真的不需要任何繁重的工作,而且我也不需要对单元位置进行硬编码,因为excel文件可能会随时间而改变。 我还必须在行中添加一个隐藏的“ID”单元格。 我想我可以过桥了。

使用c#从excel文件中删除行

我正在打开一个像这样的excel文件: Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; Excel.Range range; string str; int rCnt = 0; int cCnt = 0; xlApp = new Excel.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 我想知道: 如何循环遍历所有行并删除stringSomeString不在column A出现的每一行? 我知道如何循环每个值: for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++) […]

Excel:如果使用绝对path只能打开文件,为什么?

我有一些麻烦来说明为什么我会得到一个例外。 我有这样的东西: string path = "file.xls"; if (File.Exists(path)) { Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(path); //exception //… } 例外: Unhandled Exception: System.Runtime.InteropServices.COMException: 'file.xls' could not be found 那么这就是为什么我要检查File.Exists ,所以我没有得到这个例外。 那么这是如何工作的, File.Exists是真的,但文件仍然无法find? 如果我使用绝对path,那么它的工作。 为什么? 我想用这个没有绝对path,有什么想法? 谢谢 编辑:当然file.xls是在我的.exe文件相同的文件夹 – >这就是为什么(如预期的) File.Exists返回true。 只是想说清楚;)

Microsoft ACE驱动程序在我的程序的其余部分更改了浮点精度

在使用Microsoft ACE驱动程序打开Excel电子表格之后,我遇到了某些计算结果更改的问题。 下面的代码重现了这个问题。 前两个DoCalculation调用产生相同的结果。 然后我调用OpenSpreadSheet函数,它使用ACE驱动程序打开和closuresExcel 2003电子表格。 您不希望OpenSpreadSheet对最后一次调用OpenSpreadSheet有任何影响,但事实certificate结果实际上发生了变化。 这是程序生成的输出: 1,59142713593566 1,59142713593566 1,59142713593495 请注意最近3位小数的差异。 这似乎没有什么太大的差别,但是在我们的生产代码中,计算是复杂的,所得到的差异是相当大的。 如果我使用JET驱动程序而不是ACE驱动程序,则没有区别。 如果我将types从double改为decimal,错误就会消失。 但是在我们的生产代码中这不是一个选项。 我在Windows 7 64位上运行,程序集是为.NET 4.5 x86编译的。 我们正在运行32位Office,因此使用64位ACE驱动程序不是一个选项。 有谁知道为什么会发生这种情况,我该如何解决? 以下代码重现了我的问题: static void Main(string[] args) { DoCalculation(); DoCalculation(); OpenSpreadSheet(); DoCalculation(); } static void DoCalculation() { // Multiply two randomly chosen number 10.000 times. var d1 = 1.0003123132; var d3 = 0.999734234; double […]

C#将csv转换为xls(使用现有的csv文件)

我相信这里有很多关于这个问题的讨论。 但我阅读所有post,并尝试,但它从来没有与C#工作。 我的目标很简单,我有现有的CSV文件。 只需要转换exel文件并完成。 许多人说,使用spire.xls的东西,但我相信MS .office.interop.excel可以处理它。 将Excel文件从.csv转换为.xlsx 我阅读上面的问题,这是一样的,我的问题。 但上面的代码不工作在我的电脑..我需要导入其他的DLL来使用这个。 我只是从该网站复制代码。 再次复制下面… 目前即时通讯使用Lib作为MS.office.interop.excel和MS.office.interop.core Application app = new Application(); Workbook wb = app.Workbooks.Open(@"C:\testcsv.csv", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); wb.SaveAs(@"C:\testcsv.xlsx", XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); wb.Close(); app.Quit(); 这里有很多错误。 修改代码是在下面,现在我只使用MS.office.interop.excel和MS.office.interop.core在我的参考。 它看起来像我需要使用另一个DLL文件。 无论如何,我确实按照该代码,并作出新的代码。 它减less了错误,但我不知道这是正确的做法。 下面是我现在尝试的。 […]

如何将所有的Excel工作表导入C#中的DataSet

我为此search了互联网,并不能真正find像这样的问题。 每个人都在寻找一种方法来导入excel文件中的单个工作表,但是我想要的是将文件中的所有工作表导入到DataSet DataTable中,而无需知道工作表名称。 以前我没有用Excel做过很多事情。 这是我在互联网上find的一个示例和部分工作代码,它只parsing给定的工作表名称: public static DataSet Parse(string fileName, string workSheetName) { string connectionString = string.Format("provider=Microsoft.Jet.OLEDB.4.0; data source={0};Extended Properties=Excel 8.0;", fileName); string query = string.Format("SELECT * FROM [{0}$]", workSheetName); DataSet data = new DataSet(); using (OleDbConnection con = new OleDbConnection(connectionString)) { con.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter(query, con); adapter.Fill(data); } return data; } 在上面的代码中,如您所见,应该传入workSheetName,以便查询可以知道在哪里查看导入。 […]

从.NET中的VBA函数访问返回值?

我有以下代码在VBA(驻留在Excel 2007工作簿中): Public Function Multiply(a As Double, b As Double) As Double Multiply = a * b End Function 如果我从其他VBA代码中调用Multiply,它会返回正确的值。 但是,当我从C#中调用Multiply时: var excel = new Application {Visible = true}; excel.Workbooks.Open(filename); var returned = excel.Run("Sheet1.Multiply", (Double) a, (Double) b); …乘法发生(我可以通过添加跟踪到VBA中的Multiply函数来validation这一点),但是返回的值在我的C#代码中是不可用的; returned的总是null 。 有人可以告诉我如何得到从我的C#代码Multiply的返回值?

Excel的当前格式在Closedxml SaveAs方法中得到了改变

在我的C#应用​​程序中,我使用了ClosedXml .Excel来处理excel文件。 我有一个Excel模板,我将模板添加到应用程序中,并将数据添加到Excel表格并保存如下的Excel, wb = new XLWorkbook(exportOption.FileName); — if (wb.Worksheets.Count > 0) { for (int i = 0; i < wb.Worksheets.Count; i++) { using (var ws = wb.Worksheet(i + 1)) { if (ws.Visibility == XLWorksheetVisibility.Visible) { ws.SetTabActive(); break; } } } } try { wb.CalculateMode = XLCalculateMode.Auto; wb.SaveAs(exportOption.FileName); } 保存更改后,我的excel格式也完全改变与其他表。 例如,在一张表中我有百分比格式更改为date格式。 我怎样才能保持Excel的格式相同,只是插入数据到其他工作表。