Tag: c#

如何从XLSX(Excel)读取?

从.xlsx(Excel)文件读取时遇到问题。 我试着用: var fileName = @"C:\automated_testing\ProductsUploadTemplate-2015-10-22.xlsx"; var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName); var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString); var ds = new DataSet(); adapter.Fill(ds, "XLSData"); DataTable data = ds.Tables["XLSData"]; // … Loop over all rows. StringBuilder sb = new StringBuilder(); foreach (DataRow row in data.Rows) { sb.AppendLine(string.Join(",", row.ItemArray)); […]

Excel互操作阻止显示密码对话框

我正在写一个程序清理空行和列的Excel文件,我从我自己的问题开始最快速的方法来删除空行和列从Excel文件使用互操作 ,一切都很好。 问题是,我想防止excel显示密码对话框,当工作簿是密码保护,并抛出一个exception,而不是 。 我正在使用以下代码使用interop打开excel文件: m_XlApp = New Excel.Application m_XlApp.visible = False m_XlApp.DisplayAlerts = False Dim m_xlWrkbs As Excel.Workbooks = m_XlApp.Workbooks Dim m_xlWrkb As Excel.Workbook m_xlWrkb = m_xlWrkbs.Open(strFile) m_xlWrkb.DoNotPromptForConvert = true 我试图通过一个空的密码,build议一些链接 m_xlWrkb = m_xlWrkbs.Open(strFile, Password:="") 或者使用 m_xlWrkb.Unprotect("") 但没有运气。 有什么build议么?

从没有保存到文件系统的上传的Excel文件获取数据

我有一个要求,允许此ASP.NET Web应用程序的用户上载特定格式的Excel电子表格,填充电子表格中的数据数组,并将数组绑定到Oracle存储过程进行validation和插入数据库。 我必须能够从Excel电子表格中读取数据,而不能将其保存到Web服务器的硬盘上。 这是我无法弄清楚如何去做的部分。 这是一个简单的代码示例。 <%–ASP.NET Declarative–%> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="Send File" OnClick="Button1_Click" /> // C# Code-Behind protected void Button1_Click(object sender, EventArgs e) { var postedFile = FileUpload1.PostedFile; // … Read file in memory and put in format to send to stored procedure … } 谁能帮我这个? 我感谢任何人的考虑。 谢谢, 加布

使用Excel Interop发生的最烦人/最奇怪的事情是什么?

在使用.Net的Excel Interop开发一段时间后,我越来越讨厌有多less“奇怪的事情”发生 – 比如我之前发布的这个问题 – 我的问题 。 我很欣赏,这不是一个直接的问题,更多的是一个经验的合作,但是我认为,找出人们最大的烦恼/奇怪的事情,以及如何克服它们是有帮助的。 这样我可以找出什么问题,我可能遇到未来:) 谢谢

阅读一个大的Excel文件

我想知道什么是在Excel中读取单元格的最快方法。 我有一个包含50000行的Excel文件,我想知道如何快速读取它。 我只需要阅读第一栏和oledb连接,我需要15秒。 有更快的方法吗? 谢谢

C#和Excel互操作

我的一个用户在尝试通过我的C#应用​​程序打开一个Excel文件时遇到了问题。 当我从我的机器上运行它,一切工作正常,它适用于其他用户。 我不是Excel互操作专家,所以希望你们能帮助我。 这是如何设置的: 我添加了一个对我的应用程序的引用Microsoft.Office.Interop.Excel.dll,版本10.0.4504.0(我相信是Excel 2002)。 在我的机器上,我安装了Excel 2007.在我的代码中,我尝试打开一个工作表,如下所示: using Microsoft.Office.Interop … Microsoft.Office.Interop.Excel.ApplicationClass _excelApp = new Microsoft.Office.Interop.Excel.ApplicationClass(); Microsoft.Office.Interop.Excel.Workbook excelWorkbook = _excelApp.Workbooks.Open(workbookPath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", false, false, 0, true, false, false); Microsoft.Office.Interop.Excel.Sheets excelSheets = excelWorkbook.Worksheets; Microsoft.Office.Interop.Excel.Worksheet excelWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)excelSheets.get_Item(1); 我将用户版本logging为Excel 9.0(即2000)。 用户得到的错误是: Exception='System.AccessViolationException: Attempted to read or write protected memory. This is […]

如何使用NPOI来读取包含空单元格的Excel电子表格?

当我使用NPOI读取Excel工作表时,将跳过空单元格。 例如,它的行包含A, B, , C和我读它使用 IRow row = sheet.GetRow(rowNb) 然后row.Cells[1].ToString()会输出B (如预期的),但row.Cells[2].ToString()将输出C而不是空string。 有没有办法保持空单元格? 谢谢。

C#Excel自动化导致Excel内存泄漏

我正在尝试使用C#与COM互操作库打开一套非常沉重的Excel工作簿。 我必须使用C#,因为我还需要启动macros,移动一些单元格,并开始一个自定义的Excel加载项,我的公司使用。 然后我的程序退出,将工作簿打开,每个都在一个单独的excel实例中。 当程序退出时,我不希望工作簿被closures。 问题是,当我的C#程序退出,随着时间的推移,Excel工作簿逐渐消耗更多的内存,直到他们从原来的500 MB内存消耗3.5演唱会的内存。 我曾经手工打开工作簿,工作表从未消耗过多的内存。 一旦我开始使用C#打开它们,由于内存使用量过大,它们开始中断。 我的理论是,当我与COM Excel对象交互时,我创build了一个内存泄漏。 以下是我的原始代码: using Excel = Microsoft.Office.Interop.Excel; … excelApp = new Excel.Application(); excelApp.Visible = true; excelApp.Workbooks.Open(filename, misValue, misValue, misValue, misValue, misValue, true, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue); excelApp.Calculation = Excel.XlCalculation.xlCalculationAutomatic; 我阅读了关于如何使用Marshal来释放使用的信息,所以现在我正在尝试下面的代码,但是除了打开所有的表格并且看看它们是否消耗了太多的数据之外,没有简单的方法来testing它。 excelApp = new Excel.Application(); excelApp.Visible = true; Excel.Workbooks currWorkbooks = excelApp.Workbooks; Excel.Workbook currWorkbook […]

为什么不能设置从Excel互操作的对象?

试图获得对工作表的引用(使用Excel互操作): Excel.Application xl = new Excel.ApplicationClass(); Excel.Workbooks xlWorkBooks = xl.Workbooks; Excel.Workbook xlWorkBook = xlWorkBooks.Open(fileName, 0, false, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); // Next line crashes Excel.Worksheets xlWorkSheets = (Excel.Worksheets) xlWorkBook.Worksheets; 错误是它不能施放它: 无法将“System .__ ComObject”types的COM对象转换为“Microsoft.Office.Interop.Excel.Worksheets”types的接口。 此操作失败,因为IIC“{000208B1-0000-0000-C000-000000000046}”接口的COM组件上的QueryInterface调用失败,原因是出现以下错误:没有支持此接口(exception来自HRESULT:0x80004002(E_NOINTERFACE)) 。 我的投射不正确?

将IEnumerable <T>导出到Excel

任何人都知道如何或一些图书馆使用这个?