excel 就像左图有 3 列。
插入数据库时,我需要像右图那样手动添加2列,最后一共插入5列。这 2 个额外的列信息是从其他数据库中获取的。
另一个功能是如果已经存在文件,新上传的文件将覆盖现有文件。[下面的 views.py 中的片段]
我已经尝试了两个 3 方工具但没有用,所以也许只使用嵌入在 django 中的那个更好。
版本:Python 2.7。 Excel 2013.Django1.8.
非常感谢任何帮助。希望可以提供有关如何附加这两列的详细信息片段:
uploader = request.session['uploader']
Date=request.session['date']
表单.py
from django.core.files.storage import FileSystemStorage
from financialdata.storage import OverwriteStorage
class XXXXDataForm(forms.Form):
XXXXfile=forms.FileField(label='Select a file')
views.py
from django.core.files.storage import FileSystemStorage
def import_data(request):
if request.method == "POST":
form = XXXXForm(request.POST,request.FILES)
if form.is_valid():
newdoc= XXXX(docfile=request.FILES['docfile'])
newdoc.save()
return HttpResponseRedirect(reverse('homepage'))
else:
return HttpResponseBadRequest()
else:
form = XXXXForm()
return render_to_response(
'dataentry.html',
{
'form': form,
'title': 'Import excel data into database example',
'header': 'Please upload XXXX.xlsx:',
'message': 'File Saved!'
},
context_instance=RequestContext(request))
<!--How can I embed the following part to previous part?-->
class OverwriteStorage(FileSystemStorage):
def _save(self, name, content):
if self.exists(name):
self.delete(name)
return super(OverwriteStorage, self)._save(name, content)
def get_available_name(self, name):
return name
最佳答案
可能是这样的:
我不运行我的代码,这是一个例子
if request.method == "POST": form = XXXXForm(request.POST,request.FILES) if form.is_valid(): docfile=request.FILES['docfile']<p></p>
if isinstance(docfile, (InMemoryUploadedFile, TemporaryUploadedFile)): book = xlrd.open_workbook(file_contents=docfile.read(), formatting_info=True, on_demand=True) else: book = xlrd.open_workbook(filename=docfile, formatting_info=True, on_demand=True) sheet = book.sheet_by_index(0) new_csv_file = csv.writer(open('new_filename', 'w')) # read file for line in range(1, sheet.nrows): new_row = [request.session.get('uploader'), request.session.get('date')] new_row.extend(sheet.row_values(line)) new_csv_file.writerow(new_row)
...
关于python - django1.8-上传Excel插入数据库时如何手动追加信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34196545/