Tag: winforms

C#COM互操作:写入Excel工作表单元格

我正在使用Microsoft.Office.Interop.Excel在一个WinForm中,我正在阅读一个Excel文件,处理数据,并输出一个新的Excel文件。 不过,我无法写入单元格 – 专门添加列标题。 代码如下: Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); Worksheet ws = (Worksheet)wb.Worksheets[1]; for (int i = 0; i < dt.Columns.Count; i++) { for (int j = 0; j < dt.Rows.Count; j++) { ws.Cells[j + 1, i] = dt.Rows[j][i].ToString(); } } ws.Cells[0, 0] = "Ticket Number"; ws.Cells[0, 1] = "Transit"; […]

使用格式化从datagridview生成Excel的最快方法

我有一个代码从datagridview 导出数据到Excel工作表,但问题是它是非常缓慢,因为它插入数据和格式化每个单元格 。 我该如何提高这个操作的性能? 以下是我的代码 public static void ExcelExport(DataGridView Dg, string TypePass) { Microsoft.Office.Interop.Excel.ApplicationClass ExcelApp = new Microsoft.Office.Interop.Excel.ApplicationClass(); ExcelApp.Application.Workbooks.Add(Type.Missing); Excel_12.ApplicationClass oExcel_12 = null; //Excel_12 Application Excel_12.Workbook oBook = null; // Excel_12 Workbook Excel_12.Sheets oSheetsColl = null; // Excel_12 Worksheets collection Excel_12.Worksheet oSheet = null; // Excel_12 Worksheet Excel_12.Range oRange = null; // Cell or Range […]

无法closures从VB.NET应用程序的Excel进程

我创build了下面的类来打开并收集excel文件中的工作表名称。 它在打开文件和返回每个单独工作表的名称时应该如此。 不幸的是,我无法closures文件。 这使Excel.exe进程挂起。 即使在我试图closures它在这个类的底部,过程仍然挂起。 我必须手动转到Windows任务pipe理器并杀死该进程,然后才能再次使用该文件。 即使我退出应用程序,它仍然在那里。 任何关于如何从代码中杀死这个过程的build议? Imports Excel = Microsoft.Office.Interop.Excel Public Class ExcelWrapper Dim strTypeSelection As String = String.Empty Dim strFilePath As String = String.Empty Function GetWorksheetsByName(ByVal strfilePath As String) As Array Dim xlsApp As Excel.Application Dim xlsWorkBook As Excel.Workbook xlsApp = New Excel.Application xlsWorkBook = xlsApp.Workbooks.Open(strfilePath) Dim intWsCount As Integer = xlsApp.Worksheets.Count […]

创build一个excel文件并自动扩展列宽

我有一个常规的HTML表格: <table> <tr>hello</tr> <tr>world</tr> </table> 我正在创build一个XLS文件: string randomname = @"C:\attachmentsfolder\" + System.IO.Path.GetRandomFileName() + ".xls"; System.IO.File.WriteAllText( randomname, message); 当我打开生成的XLS文件时,我需要手动扩展列以查看长数据。 我的问题是:我怎样才能生成这个XLS文件,以便列已经适当的大小?

如何将excel工作表复制到另一个excel工作簿,而无需打开c#winforms中的excel文件?

在C#windows应用程序中,我有许多excel工作簿,我想要的是将工作表从Excel工作簿复制到单个工作簿。 这是可能的,但我必须打开excel工作簿才能这样做。 Excel.Application app = new Excel.Application(); app.Visible = true; app.WindowState = XlWindowState.xlMinimized; app.Workbooks.Add(""); app.Workbooks.Add(@"Path\WorkBook1.xlsx"); app.Workbooks.Add(@"Path\WorkBook2.xlsx"); for (int i = 2; i <= app.Workbooks.Count; i++) { int count = app.Workbooks[i].Worksheets.Count; app.Workbooks[i].Activate(); for (int j = 1; j <= count; j++) { Excel._Worksheet ws = (Excel._Worksheet)app.Workbooks[i].Worksheets[j]; ws.Select(true); ws.Cells.Select(); Excel.Range sel = (Excel.Range)app.Selection; sel.Copy(Type.Missing); Excel._Worksheet sheet = […]

自动完成ComboBox C#

我从Excel(大约2000个项目)加载庞大的数据库到combobox。 例如CD标题。 然后我从这2000年select1 CD标题。我想在这里使用自动完成,但我不知道如何.. // Loading items from Excel for (rCnt = 2; rCnt <= range.Rows.Count; rCnt++) { for (cCnt = 1; cCnt < 2; cCnt++) { str = Convert.ToString(saRet[rCnt,cCnt]); // Loading items to ComboBox ReferenceCombo.Items.Add(str); }

导出Datagridviewlogging到Excel

嘿,朋友,我需要将WinForm的datagridview的logging导出到MSExcel。 我想这样做,而不使用任何DLL即与C#的属性中的buid。 那么有没有解决我的问题的好方法?

Excel进程不closures

我有这个C#程序,从不closuresExcel进程。 基本上它发现一个string出现在Excel范围内的实例的数目。 我已经尝试了各种各样的东西,但是不起作用。 有一个窗体调用这个方法,但是这不应该改变为什么这个过程不closures。 我看了Hans Passant的build议,但都没有工作。 编辑:我试过提到的事情,它仍然不会closures。 这是我更新的代码。 编辑:试了整个Process.Kill(),它的工作原理,但它似乎有点应该只是工作的黑客。 public class CompareHelper { // Define Variables Excel.Application excelApp = null; Excel.Workbooks wkbks = null; Excel.Workbook wkbk = null; Excel.Worksheet wksht = null; Dictionary<String, int> map = new Dictionary<String, int>(); // Compare columns public void GetCounts(string startrow, string endrow, string columnsin, System.Windows.Forms.TextBox results, string excelFile) { […]

从DataGridView到Excel 2002中隐藏的exception复制/粘贴

早上好, 运行Visual Studio 2008(C#3.5)。 DataGridView手动加载(不是数据绑定)。 复制/粘贴到记事本/写字板工作正常,但是当我尝试复制/粘贴到Excel我得到这个奇怪的例外: Invalid FORMATETC structure (Exception from HRESULT: 0x80040064 (DV_E_FORMATETC)) 这是上星期五的工作。 我完全难倒了。 我很确定这在过去有效。 我试过重新启动,重新添加DataGridView控件。 任何帮助非常感谢。 问候,阿兰。

将excel数据粘贴到空白DataGridView – 索引超出范围的exception

我有一个Excel表格,内容如下: 所以,我想要实现的是从Excel复制并粘贴到一个空白的DataGridView视图。 这是迄今为止的代码: private void PasteClipboard(DataGridView myDataGridView) { DataObject o = (DataObject)Clipboard.GetDataObject(); if (o.GetDataPresent(DataFormats.Text)) { string[] pastedRows = Regex.Split(o.GetData(DataFormats.Text).ToString().TrimEnd("\r\n".ToCharArray()), "\r\n"); foreach (string pastedRow in pastedRows) { string[] pastedRowCells = pastedRow.Split(new char[] { '\t' }); using (DataGridViewRow myDataGridViewRow = new DataGridViewRow()) { for (int i = 0; i < pastedRowCells.Length; i++) myDataGridViewRow.Cells[i].Value = pastedRowCells[i]; myDataGridView.Rows.Add(myDataGridViewRow); } […]