Tag: c#

工作表名称不能为空

我收到错误在Excel文档中下载数据时, Worksheet names cannot be empty 。 下面是我从哪里得到错误的代码 protected void btnDownloadExcel_OnClick(object sender, EventArgs e) { try { DataTable dt = GetReportData(); if (dt.Rows.Count > 0) { string fileName = drpReports.SelectedItem.ToString(); using (XLWorkbook excel = new XLWorkbook()) { //error from below line excel.Worksheets.Add(dt); excel.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; excel.Style.Font.Bold = true; Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment;filename=" + fileName […]

如何在Excel中合并单元格?

我有一个对象的列表,我想为每个对象专用三行,我用这个例程使用“Office打开Xml库”: int row = 1, col = 1; for (int i = 0; i < MyList.Count * 3; i+=3) { MySheet.Cells[row + i, col, row + i + 1, col].Merge = true; // merge two and get a "result" MySheet.Cells[row + i + 1, col, row + i + 2, col].Merge = true; // merge […]

Epplus导出错误是这样的:'System.Data.DataSet'对象types'System.Data.DataTable'不是实物。

我想转换一个GridView到.xls,但它会抛出错误,当我点击确定它给我“无法导出到Excel。原始错误:'System.Data.DataSet'对象types'System.Data.DataTable'没有采取善良。“这是我的代码; 我的searchbutton groupBox2.Visible = true; SqlConnection baglanti = new SqlConnection("Data Source=.; Initial Catalog=database; Trusted_Connection=yes; MultipleActiveResultSets=True"); SqlDataAdapter da = new SqlDataAdapter(); SqlCommand cmd = new SqlCommand(); DataSet ds = new DataSet(); baglanti.Open(); cmd.CommandText = "SELECT * FROM hostes_tablo WHERE ayak_no=" + comboBox7.Text + ""; da.SelectCommand = cmd; cmd.Connection = baglanti; da.Fill(ds, "hostes_tablo"); dataGridView1.DataSource = ds; dataGridView1.DataMember […]

无法将C#int数组传递给VBA Excelmacros

我试图从我的C#应用​​程序调用我的Excel工作表(2003)的macros与C#互操作。 它使用整数参数之前工作正常。 但现在我需要传递一个整型数组,并且一直得到一个types不匹配的exception。 COMException: Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH)) C#代码如下所示: object m = Type.Missing; xlApp.Run("MergeColumnsKeepValues", lastGroupRowExcel, firstGroupRowExcel, mergeColumns, rightFormatMergeColumn, multiRowColumn, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m); 其中所有的参数都是Int32types的,除了是Int32[9] mergeColumns Int32[9] 我的Excel模板中的VBAmacros看起来像这样: Sub MergeColumnsKeepValues(lastGroupRow As Integer, […]

使用C#查找Excel范围内的操作date

我有一个情况,我正在使用Excel工作簿,我想find每个单元格都有一个date,专门在该单元格上做一些工作。 date是在列中,但从我读过的,似乎更容易抓住整个使用的范围,并检查单元格。 不幸的是,我所发现的是,一旦我拥有这些细胞,我就无法在其中发现一个date。 这里是我正在使用的方法的内容: Excel.Worksheet sheet = (Excel.Worksheet)oWB.ActiveSheet; Excel.Range range = sheet.UsedRange; //get an array of values from the cells System.Array cellvals = (System.Array)range.Cells.Value2; //go through each foreach(object obj in cellvals) { //is it a datetime? DateTime testdt = new DateTime(); double holder = 0.00; if (double.TryParse(obj.ToString(),out holder)) { bool test = DateTime.TryParse(holder.ToString(), out testdt); […]

如何使用XSLTdynamic创build工作表?

我想根据过程返回的数据集结果(所有数据集结果是相同的输出格式)dynamic创build工作表。 XML : <NewDataset> <Table> <record> <id>1</id> <name>sdf</name> <record> <record> <id>2</id> <name>sdfooop</name> </record> </Table> <Table1> <record> <id>1</id> <name>sdffff</name> <record> <record> <id>2</id> <name>sdfwerwerwe</name> </record> </Table1> 在上面的例子中,存储过程返回2个结果集Table,Table1(这个结果集计数可能有所不同)请告诉我如何使用XSLT在同一工作簿中dynamic创build工作表。 提前致谢..

如何使用Web服务发送和接收Excel数据

如何使用Web服务发送和接收Excel数据 我创build了一个Web应用程序来发送Excel文件数据到Web服务。 protected void Page_Load(object sender, EventArgs e) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:58959/RESTServiceImpl.svc/PostFile"); request.ContentType = "application/vnd.ms-excel"; request.Headers.Add("filename", "fooBar.xls"); request.Method = WebRequestMethods.Http.Post; byte[] fileData = System.IO.File.ReadAllBytes("C:\\Users\\Public\\Documents\\Forecast Pro TRAC\\Input\\Book1.xls"); request.ContentLength = fileData.Length; using (System.IO.BinaryWriter postStream = new System.IO.BinaryWriter(request.GetRequestStream())) { postStream.Write(fileData); postStream.Flush(); postStream.Close(); } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); System.Diagnostics.Debug.Assert(response.StatusCode == HttpStatusCode.OK); string responseMessage = string.Empty; using (System.IO.StreamReader sr […]

如何在C#中等待线程完成?

我创build了两个线程来获取一个表和一个函数ExcelSave(DataTable, nameofSheetinExcel)来保存所有的DataTable到基于Thread的名字的Excel。 我想等待第一个线程保存完成,并转到第二个线程保存。 我创build了两个线程: var t1 = new Thread(new ThreadStart(RegisterInfo)) { Name = "Thread1" }; t1.Start(); var t2 = new Thread(new ThreadStart(RegisterInfo)) { Name = "Thread2" }; t2.Start(); t1.Join(); t2.Join(); 我的代码保存文件excel是这样的: if (Thread.CurrentThread.Name == "Thread1") ExcelSave(dt, "Thread 1"); else ExcelSave(dt, "Thread 2"); 因为我有例外: 保存文件时出错,因为进程无法访问文件“D:\ lapproject \ bin \ Debug \ data.xlsx”,因为另一个进程正在使用它。 System.Exception {System.IO.IOException}` 有任何方法可以避免这种情况? 感谢所有人。

如何定义Excel单元格部分可见?

是否可以使用Excel互操作来定义一些可见的细胞部分? 我知道使用Application.ActiveWindow.VisibleRange我可以得到可见的工作表范围。 第46行的这个单元格包含在这个范围内,但是我们有一些方法可以定义单独的单元格吗? 我们的加载项将一些文本插入到单元格中。 我的任务是滚动一些选定的单元格,使其完全可见。 如果我在Excel中的这种单元格上双击,光标会出现在那里,表单滚动了一下,我想用C#代码做同样的事情。 到目前为止,我find了方法来定义用户与最后一行工作(通过使用Application.ActiveWindow.VisibleRange和滚动Application.ActiveWindow.SmallScroll ),但我不能保证最后一行总是部分可见 – 我不需要滚动完全可见的单元格。

在c#中每隔500毫秒从excel文件中读取数据

我有一个包含一些logging,并logging在一秒钟内刷新的Excel文件。 我想要将所有logging存储在SQL Server数据库中。 所以我的意图是每500毫秒后将数据从这个文件读入我的数据库。 我已经成功读取数据并存储在我的数据库中。 但几分钟后,excel挂起,处于不响应的状态。 Excel._Application excel = (Excel._Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); clsDBOLiveData objDBOLiveData = new clsDBOLiveData(); clsDatabase objDatabase = new clsDatabase(); private static System.Timers.Timer aTimerLive_1; private static System.Timers.Timer aTimerHist_1; private static System.Timers.Timer aTimerLive_2; private static System.Timers.Timer aTimerHist_2; //Here I declare all variables. public TradeData() { SetTimer1_Data(); SetTimer2_Data(); SetTimerHist_1_Data(); SetTimerHist_2_Data(); } private void SetTimerLiveMCX_1_Data() { aTimerLive_1 = […]