Tag: c#

从包含重音字符的剪贴板获取CSV数据(从Excel粘贴)

情景 我的用户将从Excel复制单元格(从而将其放入剪贴板) 而我的应用程序将从剪贴板中检索这些单元格 问题 我的代码从剪贴板中检索CSV格式 但是,如果原始的Excel内容包含ä(a与变音符号)等字符,则检索到的CSVstring不会具有正确的字符(ä最终会显示为“正方形”) 相比之下,如果我的代码从剪贴板检索Unicode文本格式,一切正常:ä保存在从剪贴板检索的string中 SOURCE CODE – ORIGINAL – 有问题 [STAThread] static void Main(string[] args) { var fmt_csv = System.Windows.Forms.DataFormats.CommaSeparatedValue; // read the CSV var dataobject = System.Windows.Forms.Clipboard.GetDataObject(); var stream = (System.IO.Stream)dataobject.GetData(fmt_csv); var enc = new System.Text.UTF8Encoding(); var reader = new System.IO.StreamReader(stream,enc); string data_csv = reader.ReadToEnd(); // read the unicode string string […]

在Excel 2007中打开时,Excel电子表格生成结果为“与扩展错误不同的文件格式”

电子表格仍然显示,但带有警告消息。 这个问题似乎发生,因为Excel 2007比早期版本的Excel更符合其扩展的格式。 这个问题最初是由一个ASP.Net程序发现的,并且在Excel错误中产生“你试图打开的文件”Spreadsheet.aspx-18.xls“与文件扩展名指定的格式不同。 validation…“然而,当我打开文件时,它显示得很好,我正在使用Excel 2007. Firefox将文件标识为Excel 97-2003工作表。 这是一个生成问题的ASP.NET页面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Spreadsheet.aspx.cs" Inherits="Spreadsheet" %> 文件后面的代码如下所示: public partial class Spreadsheet : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.ContentType = "application/vnd.ms-excel"; Response.Clear(); Response.Write("Field\tValue\tCount\n"); Response.Write("Coin\tPenny\t443\n"); Response.Write("Coin\tNickel\t99\n"); } } Ť

Open XML SDK 2.0 – 如何更新电子表格中的单元格?

我想使用Open XML SDK 2.0(CT​​P)更新图表使用的电子表格中的单元格。 所有我find的代码示例插入新的单元格。 我正在努力检索正确的工作表。 public static void InsertText(string docName, string text, uint rowIndex, string columnName) { // Open the document for editing. using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(docName, true)) { Workbook workBook = spreadSheet.WorkbookPart.Workbook; WorksheetPart worksheetPart = workBook.WorkbookPart. WorksheetParts.First(); SheetData sheetData = worksheetPart.Worksheet. GetFirstChild<SheetData>(); // If the worksheet does not contain a row with […]

使用C#在Excel中合并单元格

我有一个包含5个表的数据库。 每个表格包含24行,每行包含4列。 我想在Excel工作表中显示这些logging。 每个表的标题是表的名称,但我无法合并标题的列。 请帮帮我。

如何读取单个Excel单元格的值

我有excel文件sheet1有一个值,我需要阅读第2行和第10列。这是我的代码。 Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); Excel.Sheets excelSheets = excelWorkbook.Worksheets; string currentSheet = "Sheet1"; Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelSheets.get_Item(currentSheet); var cell = (Excel.Range)excelWorksheet.Cells[10, 2]; 获取Excel.Range的单元格对象后,我不知道如何读取该单元格的内容。 我试着把它转换成数组,并循环它,我试图转换为string数组等。我相信这是非常简单的。 有一个直接的方法来获得一个string的单元格值吗?

如何使用epplus遍历Excel表中的行?

我是新来的epplus ,我试图从Excel表中读取一些值。 这是我迄今为止: var fileInfo = new FileInfo(filename); using(var excelPackage = new OfficeOpenXml.ExcelPackage(fileInfo)) { foreach (var sheet in excelPackage.Workbook.Worksheets) { foreach (ExcelTable table in sheet.Tables) { foreach(var row in table.Rows) // <– !! { … } } } } 但是,现在我很难过,因为ExcelTable只有一个Columns属性,而不是我预期的一个Rows属性。 我无法在库中的任何对象上findRows属性。 如何遍历一个表,读Row for Row?

实时(未保存的)Excel数据和C#对象之间的最快接口

我想知道什么是从一个打开的Excel工作簿读取和写入数据到c#对象的最快方式。 背景是我想开发从Excel使用的ac#应用程序,并使用Excel中保存的数据。 业务逻辑将驻留在C#应用程序中,但数据将驻留在Excel工作簿中。 用户将使用Excel,并在Excel工作簿上点击一个button(或者做类似的事情)来启动C#应用程序。 然后,C#应用程序将从Excel工作簿中读取数据,处理数据,然后将数据写回到Excel工作簿。 可能有许多数据块需要被读取并写回到Excel工作簿,但通常是相对较小的尺寸,例如10行和20列。 有时可能需要处理大量的数据列表,大约50,000行和40列。 我知道用VSTO做这个比较容易,但是我想知道什么是最快的(但仍然健壮和优雅)的解决scheme,并得到速度的想法。 我不介意解决scheme是否推荐使用第三方产品或使用C ++。 显而易见的解决scheme是使用VSTO或interop,但我不知道性能是什么样的,而我目前用来读取数据的VBA,或者是否有其他解决scheme。 这是张贴在专家交stream,说VSTO是比VBA慢得多,但那是几年前,我不知道是否performance有所改善。 http://www.experts-exchange.com/Microsoft/Development/VSTO/Q_23635459.html 谢谢。

我们可以使用C#for Excel编写macros吗?

我必须在excel中进行大约25页的操作。我使用vba进行操作,发现速度非常慢,因此想知道是否可以使用C#,如果这样做会帮助我加快进程。

在C#中创buildExcel工作簿时,类未注册错误

当我尝试使用以下代码访问Excel电子表格时,在安装Office 2007(版本12)的Visual Studio 2012中使用C#定义工作簿对象wrkbuk时出现“库未注册”错误 Microsoft.Office.Interop.Excel.Application excapp = new Microsoft.Office.Interop.Excel.Application(); string bookname = @"C:\Users\Public\Documents\RECRUITMENT & SELECTION\MOVEMENTS\MOVEMENTS\Miscellaneous Documents\VacanciesREAL.xls"; Workbook wrkbuk = excapp.Workbooks.Open(bookname); Worksheet wrksht = new Worksheet(); 错误的细节是 System.InvalidCastException未处理HResult = -2147467262消息=无法将types为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM对象转换为接口types“Microsoft.Office.Interop.Excel._Application”。 此操作失败,因为IID为“{000208D5-0000-0000-C000-000000000046}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:库未注册。 (来自HRESULT的exception:0x8002801D(TYPE_E_LIBNOTREGISTERED))。 来源= mscorlib程序 我已经在VS 2012中附带的Office 14 Primary Interop程序集中创build了对Microsoft.Office.Interop.Excel.dll的引用,同时也为dll的Office 12版本创build了一个对Microsoft.Office.Interop.Excel.dll的引用,但都无法解决此问题。 我试着用regasm注册dll,但是这也没有帮助。 我可以在以下行上创build工作表wrksht确定Office 14和Office 12 dll,因此问题似乎只影响工作簿定义。 2013年12月17日 试图重新安装Office 2007无济于事,但发现这个解决scheme,工作。 那是在 http://social.msdn.microsoft.com/Forums/vstudio/en-US/d3f92da7-96d3-404b-89d0-d236800ceae5/vs-2012-rc-and-visual-studio-tools-for-office?forum= VSTO 问题是来自多个版本的Office的代码 – 我有来自Office 14的代码,可能来自VS 2012安装 […]

C#:获取ExcelPackage的行数/列数

我需要从Excel电子表格读取和写入数据。 有没有一种方法来找出有多less行/列某个工作表使用ExcelPackage? 我有以下代码: FileInfo newFile = new FileInfo(@"C:\example.xlsx"); using (ExcelPackage xlPackage = new ExcelPackage(newFile)) { ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets[1]; } 我需要遍历这个工作表中的每个单元格,并将其吐到一个相当大的表中,但是我不想打印出空白单元格或得到exception。 有没有类似worksheet.rowNum或colNum的方法?