Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 修复的记录:已创建工作表中的单元格信息_Java_C#_Excel_Openxml - Fatal编程技术网

Java 修复的记录:已创建工作表中的单元格信息

Java 修复的记录:已创建工作表中的单元格信息,java,c#,excel,openxml,Java,C#,Excel,Openxml,打开OpenXML创建的电子表格时收到错误。错误如下 修复的记录:xl/worksheets/sheet.xml部分单元格信息 private void SavexlsExcelFile(字符串fullPathName) { 使用(电子表格文档=电子表格文档.Create(完整路径名,电子表格文档类型.工作簿)) { WorkbookPart WorkbookPart=document.AddWorkbookPart(); workbookPart.工作簿=新工作簿(); worksheetPa

打开OpenXML创建的电子表格时收到错误。错误如下

修复的记录:xl/worksheets/sheet.xml部分单元格信息

private void SavexlsExcelFile(字符串fullPathName)
{
使用(电子表格文档=电子表格文档.Create(完整路径名,电子表格文档类型.工作簿))
{
WorkbookPart WorkbookPart=document.AddWorkbookPart();
workbookPart.工作簿=新工作簿();
worksheetPart=workbookPart.AddNewPart();
工作表部分。工作表=新工作表();
Columns=新列();
worksheetPart.Worksheet.AppendChild(列);
Sheets Sheets=workbookPart.工作簿.AppendChild(新工作表());
Sheet Sheet=new Sheet(){Id=workbookPart.GetIdOfPart(worksheetPart),SheetId=1,Name=“Sheet”};
附页(页);
workbookPart.Workbook.Save();
sheetData=worksheetPart.Worksheet.AppendChild(新的sheetData());
List dataRow=新列表();
List dtRow=新列表();
行=新行();
对于(int i=0;i
Excel中的所有文本都存储在共享字符串表下。您需要在共享字符串表中插入字符串:

string text = dataGridView1.Columns[j].Name; 
cell.DataType = CellValues.SharedString;

if (!_spreadSheet.WorkbookPart.GetPartsOfType<SharedStringTablePart>().Any())
{
    _spreadSheet.WorkbookPart.AddNewPart<SharedStringTablePart>();
}

var sharedStringTablePart = _spreadSheet.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
if (sharedStringTablePart.SharedStringTable == null)
{
    sharedStringTablePart.SharedStringTable = new SharedStringTable();
}
//Iterate through shared string table to check if the value is already present.
foreach (SharedStringItem ssItem in sharedStringTablePart.SharedStringTable.Elements<SharedStringItem>())
{
    if (ssItem.InnerText == text)
    {
        cell.CellValue = new CellValue(ssItem.ElementsBefore().Count().ToString());
        SaveChanges();
        return;
    }
}
// The text does not exist in the part. Create the SharedStringItem.
var item = sharedStringTablePart.SharedStringTable.AppendChild(new SharedStringItem(new Text(text)));
cell.CellValue = new CellValue(item.ElementsBefore().Count().ToString());
string text=dataGridView1.Columns[j].Name;
cell.DataType=CellValues.SharedString;
if(!\u电子表格.WorkbookPart.GetPartsOfType().Any())
{
_电子表格.WorkbookPart.AddNewPart();
}
var sharedStringTablePart=_电子表格.WorkbookPart.GetPartSoftType().First();
if(sharedStringTablePart.SharedStringTable==null)
{
sharedStringTablePart.SharedStringTable=新的SharedStringTable();
}
//遍历共享字符串表以检查该值是否已存在。
foreach(sharedStringTablePart.SharedStringTable.Elements()中的SharedStringItem ssItem)
{
如果(ssItem.InnerText==文本)
{
cell.CellValue=新的CellValue(ssItem.ElementsBefore().Count().ToString());
保存更改();
返回;
}
}
//零件中不存在文本。创建SharedStringItem。
var item=sharedStringTablePart.SharedStringTable.AppendChild(新SharedStringItem(新文本));
cell.CellValue=新的CellValue(item.ElementsBefore().Count().ToString());

Excel中的所有文本都存储在共享字符串表下。您需要在共享字符串表中插入字符串:

string text = dataGridView1.Columns[j].Name; 
cell.DataType = CellValues.SharedString;

if (!_spreadSheet.WorkbookPart.GetPartsOfType<SharedStringTablePart>().Any())
{
    _spreadSheet.WorkbookPart.AddNewPart<SharedStringTablePart>();
}

var sharedStringTablePart = _spreadSheet.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
if (sharedStringTablePart.SharedStringTable == null)
{
    sharedStringTablePart.SharedStringTable = new SharedStringTable();
}
//Iterate through shared string table to check if the value is already present.
foreach (SharedStringItem ssItem in sharedStringTablePart.SharedStringTable.Elements<SharedStringItem>())
{
    if (ssItem.InnerText == text)
    {
        cell.CellValue = new CellValue(ssItem.ElementsBefore().Count().ToString());
        SaveChanges();
        return;
    }
}
// The text does not exist in the part. Create the SharedStringItem.
var item = sharedStringTablePart.SharedStringTable.AppendChild(new SharedStringItem(new Text(text)));
cell.CellValue = new CellValue(item.ElementsBefore().Count().ToString());
string text=dataGridView1.Columns[j].Name;
cell.DataType=CellValues.SharedString;
if(!\u电子表格.WorkbookPart.GetPartsOfType().Any())
{
_电子表格.WorkbookPart.AddNewPart();
}
var sharedStringTablePart=_电子表格.WorkbookPart.GetPartSoftType().First();
if(sharedStringTablePart.SharedStringTable==null)
{
sharedStringTablePart.SharedStringTable=新的SharedStringTable();
}
//遍历共享字符串表以检查该值是否已存在。
foreach(sharedStringTablePart.SharedStringTable.Elements()中的SharedStringItem ssItem)
{
如果(ssItem.InnerText==文本)
{
cell.CellValue=新的CellValue(ssItem.ElementsBefore().Count().ToString());
保存更改();
返回;
}
}
//零件中不存在文本。创建SharedStringItem。
var item=sharedStringTablePart.SharedStringTable.AppendChild(新SharedStringItem(新文本));
cell.CellValue=新的CellValue(item.ElementsBefore().Count().ToString());

我可以看到这里有两个问题。首先,您对
列的使用不正确。如果您希望控制诸如列的宽度之类的内容,则应使用
Columns
。要正确使用
,需要添加子
元素。例如(摘自):

在您的示例中,您可以删除以下两行

Columns columns = new Columns();
worksheetPart.Worksheet.AppendChild(columns);
第二个问题是您正在使用的
StyleIndex
;该样式在文档中不存在,因为您尚未添加它。这里最简单的方法就是删除
StyleIndex


当调试这样的文件时,总是值得一看。您可以在工具中打开生成的文件并对其进行验证,以查看文件中有哪些错误。

这里有两个问题我可以看到。首先,您对
列的使用不正确。如果您想继续,您应该使用
Columns columns = new Columns();
worksheetPart.Worksheet.AppendChild(columns);