Tag: c#

以编程方式更改Excel工作表的行高

我怎样才能改变我的EXCEL表单中所有非空行的行高? 在此先感谢,瓦特。

Excel到PDF C#库

我正在寻找一个MsExcel(.xsl和.xlsx)PDF转换器/库或API。 我想为我的C#.Net应用程序。 我喜欢商业图书馆,但买不起。

如何在C#中使用oledb只上载非空行的Excel电子表格?

我正在使用oledb连接导入excel表格到DataTable,如下所示。 private static DataTable UploadExcelSheet(string fileName) { DataTable uploadDataTable; using (OleDbConnection objXConn = new OleDbConnection()) { objXConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;IMEX=1\""; objXConn.Open(); OleDbCommand objCommand = new OleDbCommand("SELECT * FROM Template$ ", objXConn); OleDbDataAdapter objDataAdapter = new OleDbDataAdapter(); // retrieve the Select command for the Spreadsheet objDataAdapter.SelectCommand = objCommand; // Create […]

Excel互操作:保存工作簿而不显示保存对话框

我必须创build一个将数据集导出到Excel的控制台应用程序。 我试过Googlesearch,看着这个主题的post,但还没有真正find我在找什么。 问题是不应该popup保存窗口,它应该自动创buildexcel文件。 到目前为止,我有下面的代码,但我不知道如何使它自动保存。 将不胜感激任何帮助。 public static void CreateWorkbook(DataSet ds, String path) { int rowindex = 0; int columnindex = 0; Microsoft.Office.Interop.Excel.Application wapp = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Worksheet wsheet; Microsoft.Office.Interop.Excel.Workbook wbook; wapp.Visible = false; wbook = wapp.Workbooks.Add(true); wsheet = (Worksheet)wbook.ActiveSheet; try { for (int i = 0; i < ds.Tables[0].Columns.Count; i++) { wsheet.Cells[1, i + 1] […]

将Double转换为DateTime?

我有一个.CSV文件,我正在读入一个C#程序。 在其中一列中,有一个date,但是它是“一般”格式,所以在.CSV中显示为一个数字。 例如:41172。 我怎样才能将这个数字转换为格式dd / mm / yyyy在C#中的date? 41172相当于20/09/2012。

excel 2010types冲突NumberFormat

我有一个小程序,从数据库表创buildExcel文件,使用Excel 2013,它工作得很好,但我现在需要它的Excel 2010,现在我得到以下exception,当我将格式添加到NumberFormatLocal( range.NumberFormatLocal = format; )当使用range.NumberFormat = format;时,会出现同样的exceptionrange.NumberFormat = format; 例外: 错误消息:System.Runtime.InteropServices.COMException(0x80020005):types冲突。 (例外HRESULT:0x80020005(DISP_E_TYPEMISMATCH))在System.RuntimeType.ForwardCallToInvokeMember(stringmemberName,BindingFlags标志,ObjectTarget,Int32 [] aWrapperTypes,MessageData&msgData) function: if (chkWithValues.Checked && results.Item3.Any()) { var rows = results.Item3.Count; var cols = results.Item3.Max(x => x.Count); object[,] values = new object[rows, cols]; object[,] format = new object[rows, cols]; //All returned items are inserted into the Excel file //Item2 contains […]

如何避免使用dynamic模拟Excel.worksheet时?

我试图用NSubstitute或其他模拟框架和MSTest(Visual Studio 2010)来模拟Excel电子表格。 我不确定是否有比这更好的方法 – 这不适合testing: 这是一个例子(这是所有的原型代码,而不是很干净): int[] lowerBounds = { 1, 1 }; int[] lengths = { 2, 2 }; //Initialize a 1-based array like Excel does: object[,] values = (object[,])Array.CreateInstance(typeof(object), lengths, lowerBounds); values[1,1] = "hello"; values[2,1] = "world"; //Mock the UsedRange.Value2 property sheet.UsedRange.Value2.Returns(values); //Test: GetSetting(sheet, "hello").Should().Be("world"); //FluentAssertions 到目前为止,这么好:如果GetSetting方法与我的testing在同一个项目中 ,则通过。 但是当GetSetting在我的VSTO Excel-Addin项目中时,GetSetting函数的第一行中将失败并出现以下错误: System.MissingMethodException: Error: […]

如何导入HTML格式的Excel

我已经使用HttpContext格式化表,tr和td从数据库导出数据。 我想读取相同的文件并转换成数据表。 <add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='HTML Import;HDR={1};IMEX=1'" /> <add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1};IMEX=1'" /> private DataTable GetTableFromExcel() { DataTable dt = new DataTable(); try { if (exclFileUpload.HasFile) { string FileName = Path.GetFileName(exclFileUpload.PostedFile.FileName); string Extension = Path.GetExtension(exclFileUpload.PostedFile.FileName); string FolderPath = Server.MapPath(ConfigurationManager.AppSettings["FolderPath"]); //string NewFileName = string.Format("{0}_{1}", DateTime.Now.ToString().Replace("/", "").Replace(" ", "").Replace(":", ""), FileName); string FilePath = […]

在Excel中调用WCF方法切换“上下文”并让Word继续“工作”

我的问题很难解释,因为我不是100%确定我的自我,发生了什么事情。 我将尽我所能来解释这种情况。 只是一个警告,如果你希望有代码你必须看看,并试图find一个错误,恐怕我不能提供这样的事情,因为它是一个更普遍的问题,我面临的而不是在一个错误码。 所以…让我们开始 我有一个Excel AddIn,一个WPF应用程序和一个WCF服务器,所有我写的,我可以调整任何一方,如果这可能是neccassary。 在我的Excel AddIn中,我调用WCF服务器方法从WPF应用程序中检索数据。 在打开Excel工作簿后,我的AddIn将更新其值,因此调用WCF服务器。 这工作正常,当用户“正常”打开Excel工作簿,但失败时,这是“自动”的代码。 一种这样的情况是,所提到的Excel工作簿多次链接到一个MS Word文档中,例如一个字段函数 { LINK Excel.Sheet.12 "C:\test.xlsx" "Sheet1!R1C1" } 当用户打开MS Word文档,其中包含指向同一文件的多个链接时,MS Word将为每个链接打开Excel工作簿,在“评估”之后,它将closures工作簿。 所以,如果MS Word文档有10个链接到相同的Excel工作簿,它将打开/closures这个Excel工作簿10次。 这再次,是没有问题的。 现在,来抓住。 当用户有一个Excel实例运行时,在打开MS Word文档之前,它将无法打开第二个链接上的链接的Excel工作簿,并显示一条消息,说明该工作簿已经打开,如果第二次打开该工作簿,所有更改都会得到失去你想继续。 因此,出于某种原因,第一次打开Workbook时,MS Word未能将其closures。 通过大量的试验和错误,我将错误本地化为对我的WCF服务器的调用。 电话是: ReturnObject result = server.GetBatch(parameters, baseClass); 当我调用这一行时,好像Excel不阻止MS Word继续工作,所以当MS Word已经试图closures并打开下一个链接时,我仍然在例程中从我的WCF服务器获取所有信息,由于我仍然有一个手头的Excel工作簿的参考,MS Word只是无法closures工作簿。 该方法在我的界面中定义为: [OperationContract()] ReturnObject GetBatch(List<Parameter> parameters, ClientInfo clientInfo); 正如你所看到的,我不使用Task<ReturnObject> ,所以我期望它运行同步并阻止正在运行的线程。 我已经做了一些关于调用方法的testing,可以用这两种方法解决我的问题: 第一种方法: ReturnObject result = null; […]

如何强制ADO.Net在读取器TableSchema中仅使用System.String DataType

我正在使用OleDbConnection查询Excel 2007电子表格。 我想迫使OleDbDataReader只使用string作为列的数据types。 系统正在查看前8行数据并推断数据types为Double。 问题是,在第9行我有一个string在该列和OleDbDataReader返回一个空值,因为它不能转换为双。 我已经使用这些连接string: Provider = Microsoft.ACE.OLEDB.12.0; Data Source =“ExcelFile.xlsx”; Persist Security Info = False; Extended Properties =“Excel 12.0; IMEX = 1; HDR = No” Provider = Microsoft.Jet.OLEDB.4.0; Data Source =“ExcelFile.xlsx”; Persist Security Info = False; Extended Properties =“Excel 8.0; HDR = No; IMEX = 1” 看着reader.GetSchemaTable()。行[7] .ItemArray [5],它的dataType是Double。 此架构中的第7行与Excel中的特定列相关,我遇到了问题。 ItemArray [5]是它的DataType列 是否有可能为读者创build一个自定义的TableSchema,所以当访问ExcelFiles时,我可以将所有单元格视为文本,而不是让系统尝试推断数据types? […]